OSDC 2015: Der Countdown läuft – nur noch 92 Tage

Gergely Nagy widmet sich dem Monitoring mit syslog-ng, Riemann und Kibana.

OSDC? Noch nie gehört…
Das ist aber schade und fast schon ein unentschuldbares Versäumnis!
Aber wir holen das nach:
Die Open Source Data Center Conference (kurz OSDC) ist unsere internationale Konferenz zum Thema Open Source Software in Rechenzentren und großen IT-Umgebungen. 2015 findet sie zum siebten Mal statt und bietet mit dem Schwerpunktthema Agile Infrastructures ganz besonders erfahrenen Administratoren und Architekten ein Forum zum Austausch und die Gelegenheit zur Aneignung des aktuellsten Know-Hows für die tägliche Praxis. Diesmal treffen wir uns dafür in Berlin!
Workshops am Vortag der Konferenz und das im Anschluss an die Veranstaltung stattfindende Puppet Camp komplettieren dabei das Rundum-sorglos-Paket für Teilnehmer, die gar nicht genug Wissen in sich aufsaugen können.

Weekly Snap: RootCamp & Linux Tag, Syslog-NG & NSClient++

21 – 25 May reported live from RootCamp and Linux Tag in Berlin, and shared a couple of ideas for developers, sys admins and monitoring buffs.
Eva and Markus kept us posted on the developments of the first RootCamp in Berlin, from the sleepless nights before and the program’s emergence to the evening drinks and start of sessions.
Not too far away, were Thomas and Bernd at the related Linux Tag Berlin holding presentations on ‘Building Your Own Cloud from the Linux Toolbox” and “Icinga – Best Practices of a Fork” respectively.
Sharing his best practices, Marius gave us a peek into the team’s scrum-inspired meetings for creative exchange in software development.
In the meantime, Achim put a log server together with the help of syslog-ng while Philip looked at the latest NSClient++ 0.4.0 version, continuing onto part 5 of his series.

Logserver mit syslog-ng

Jeder Systemadministrator sollte die Logs seiner Server im Auge haben. Sobald man aber mehr als nur ein paar Systeme administriert, wird man mehr oder weniger von den eingehenden Logs überflutet. Um die Übersicht nicht zu verlieren, kann man die Logs z.B. mit Hilfe von syslog-ng kategoriersieren und filtern. Zusätzlich kann man die Logs zentral auf einem Log-Server speichern. Dies hat den Vorteil, dass die Logdateien der Log-Clients auch zur Verfügung stehen, wenn diese ausfallen.
Die Konfigurationdatei syslog-ng.conf folgt auf den Log-Clients und auf dem Log-Server dem gleichem Schema. Um Log-Nachrichten zu speichern werden drei Bereiche definiert, die Sources (die Quelle der Nachrichten, z.B. /proc/kmsg für Nachrichten vom Kernel oder einen TCP/UDP-Port für Nachrichten von anderen Rechnern), die Destionations, welche das Ziele der Nachrichten sind (z.B. Dateien oder Pipes) und die Filter um Nachrichten z.B. nach Typ oder Priorität zu filtern. Der Befehl log bringt abschließend die drei Bereiche zusammen, wobei die Angabe eines Filters optional ist. Um die eingehenden Nachrichten nach Facilities und Prioritäten zu Ordnen reichen schon folgende Zeilen:

source s_local_all {
  system();
  internal();
  file("/proc/kmsg" program_override("kernel"));
};
destination d_seperateToPriority {
  file ("/var/log/$FACILITY/$FACILITY.$PRIORITY" create_dirs(yes));
};

Hier werden alle lokalen Quellen angezapft und entsprechend nach /var/log/ gespeichert. Oftmals will man aber zusammengehörige Nachrichten unterschiedlicher Priorität nicht aus mehreren Dateien zusammen-grep-en. Um alle Nachrichten einer Facility in einer Datei zu speichern kann man noch folgende Destination einfügen:

destination d_facilities {
  file ("/var/log/$FACILITY/$FACILITY.all" create_dirs(yes));
};

Um eine Source und eine Destination zusammmenzuführen fehlt in dem Beispiel nur noch der log-Aufruf. An diesen übergibt man Sources, Filter und Destinations.

log { source(s_local_all); destination(d_facilities); };
log { source(s_local_all); destination(d_seperateToPriority); };

Es sind natürliche auch andere Aufteilungen der Logs möglich. Welche Makros möglich sind kann in der syslog-ng Dokumentation nachgelesen werden.
Um Lognachrichten an einen zentralen Server zu schicken muss folglich nur eine passende Destination definiert werden. Dazu reicht die Angabe einer IP und eines Ports. Sollen die Nachrichten verschlüsselt versendet werden kann SSL verwendet werden.

destination loghost { tcp("10.10.10.10" port(5140)); };

In der Regel will man aber nicht alle Logs zum zentralen Server schicken. Bei syslog-ng hat jede Nachricht eine von acht Prioritäten. Während des normalen Betriebs sind in der Regeln nur die Stufen emerg, alert, crit, err und warning von Interesse. Es macht also Sinn alle anderen Logs (notice, info, debug) vor dem Senden zum Logserver zu filtern.

filter f_warn2emerg { level(warn .. emerg); };

Der Filter bewirkt, dass nur Nachrichten mit einer Priorität von warn bis emerg berücksichtigt werden. Damit der Filter auch aktiv wird, muss dieser an den log-Aufruf übergeben werden. Hier können auch mehrere Filter hintereinander übergeben werden.

log { source(s_local_all); filter(f_warn2emerg); destination(loghost); };

Somit sendet der Client die Logs an unseren zentralen Server. Dieser muss natürlich noch so konfiguriert werden, dass er die Meldungen annimmt. Dazu reicht eine neue Source am Server aus, die am TCP-Port 5140 lauscht.

source s_remote_tcp { tcp( ip(10.10.10.10) port(5140) ); };

Auf dem Server fehlen jetzt nur noch die Destinations und eventuelle Filter. Diese können analog zum oberen Beispiel definiert werden.
In Normalfall sind Logdateien nicht besonders benutzerfreundlich. Eine Analyse der Logdateien vieler Hosts ist ohne weitere Hilfsmittel nicht zu empfehlen. Eine bessere Möglichkeiten stellen Tools wie Logstash, Graylog2 oder die Icinga EventDB dar. Letztere kann mit Hilfe eines kleines Perl-Skripts gefüttert werden. Dazu muss der Logserver die eingehenden Logs an eine Pipe weiterleiten. Diese gibt man in der Konfigurationsdatei von syslog-ng als Destination an. Zusätzlich wird hier noch die Darstellung der Logs angepasst.

destination d_pipe {
  pipe("/var/run/syslog-ng.pipe",
  template("$HOST\t$SOURCEIP\t$PRI\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n"));
};

Das Perlskript syslog-ng2mysql.pl überwacht diese Pipe und schickt neue Logs an eine MySQL Datenbank, welche wiederrum die EventDB mit Daten versorgt (weitere Infos).
Jetzt noch die Konfigurationsdateien der Log-Clients mit Hilfe von Puppet verteilen und man ist der Flut der Lognachrichten gewappnet.

Achim Ledermüller
Achim Ledermüller
Lead Senior Systems Engineer

Der Exil Regensburger kam 2012 zu NETWAYS, nachdem er dort sein Wirtschaftsinformatik Studium beendet hatte. In der Managed Services Abteilung ist unter anderem für die Automatisierung des RZ-Betriebs und der Evaluierung und Einführung neuer Technologien zuständig.

Weekly Snap: OSDC CfP, new Syslog-NG and faster PHP

29 Nov – 3 Dec turned over the new month with an OSDC Call for Papers, a PHP tip and a Syslog-NG new release.
From the development team, Marius shared a tip for accelerated PHP websites. He recommended the Zend Community Edition Server, a compiled Apache with a selected set of modules and the current PHP5. In the background an Apache2 runs for PHP and a lighttpd provides for the admin interface. The integrated Zend Optimizer+, PHP Opcode and page cacher help to generate pages quickly. Marius also demonstrated its ease of installation, with the help of the Zend Installer. Try it for yourself, by downloading it free from the vendor website.
Sharing his own open source tip, Julian took a look at the recently released Syslog-NG 3.2 and its new capabilities. Referencing the software vendor BalaBit, the latest release features log file correlation, a new plugin system and process accounting data collection among many others. Alongside the open source version, Balabit also offers a commercial variant with more features such as encrypted and tamper-proof log data storage. Balazs Scheidler, CEO of Balabit IT Security may be a familiar name for attendees of the 2nd OSDC where he introduced Syslog-NG 3.0 capabilities in 2009.
Finally, Manuela called out to interested speakers for the Open Source Data Center Conference coming up on the 6 -7 April 2011. Dedicated to open source software in data centers and large and complex IT environments, the conference will be held in Nuremberg with a new theme. The German language event will highlight “Automated Systems Management” and offer two intensive workshops (Configuration Management with Puppet and ITSM Reporting with Jasper) on 5 April. Interested speakers are welcome to submit their ideas to our Call for Papers and get more info and an impression of the past two events at: http://www.netways.de/osdc/y2011/ Early birds are just as welcome to snap up tickets at special rates till 28 February 2011!