
| Syslog priority Beschreibt die Wichtigkeit einer Log-Meldung. Die Werte reichen von debug (geringe Priorität) bis emergency (hohe Priorität). |
| Syslog facility Gibt an, wer die Log-Meldung erzeugt hat. Es gibt 24 verschiedene Facilities, unter anderem "Kernel Messages" und "Mail System". |
Weiterführende Links
|
New Generation? Ganz neu ist das Projekt in Wirklichkeit nicht mehr. Die Entwicklung begann bereits 1998, als Balázs Scheidler den nsyslogd (BSD) auf Linux portierte. In den letzten zehn Jahren hat sich der syslog-ng von einem kleinen Projekt zum Standard Syslog- Daemon in vielen Distributionen entwickelt. Zum Beispiel setzt SuSE seit der Version 9.3 standardmäßig auf den syslog-ng, den es in zwei Versionen gibt: Eine Open Source Variante (OSE) und die so genannte Premium Edition (PE). Beide Varianten werden von der Firma BalaBit IT Security entwickelt.
Bevor wir genauer auf die Open Source Edition eingehen, sollen die Unterschiede der einzelnen Syslog-Daemons aufgezeigt werden. Die Tabelle in Abbildung 1 zeigt die Funktionen, die der syslog-ng zusätzlich zu dem syslogd unterstützt.
Auch werden die Unterschiede zwischen den beiden syslog-ng-Varianten deutlich aufgezeigt. Im Laufe des Artikels wird der Aufbau der Konfiguration näher erläutert.
Unter /etc/syslog-ng/syslog-ng.conf liegt standardmäßig die Konfiguration des syslog-ng. Sie lässt sich am besten verstehen, wenn man sich den Ablauf eines Log-Vorgangs visualisiert (siehe Abbildung 2).
Ein Source-Objekt beschreibt die Quelle aus der Syslog, die Meldungen empfangen soll. Es können beliebig viele Source-Objekte konfiguriert werden. Um mit syslog-ng alle Meldungen zu empfangen, die auch der alte sys-logd standardmäßig empfangen hat, müsste man folgendes Objekt konfigurieren:
source s_src {
unix-stream("/dev/log");
internal();
};
Source sagt aus, dass es sich bei dem folgenden Statement um ein Source-Objekt handelt, s_src ist nur ein Name für das Objekt. In den geschweiften Klammern steht der ausschlaggebende Teil: Unix-stream("/dev/log") öffnet den Socket /dev/log (default Log- Socket) und liest alle eingehenden Meldungen. Mit internal() werden zusätzlich die internen Meldungen des Syslog-Daemons aufgefangen.
Syslog-ng kann Meldungen noch aus vielen anderen Quellen, wie z. B. einer Pipe oder einem TCP-Socket lesen. Auf jede Möglichkeit einzugehen, würde jedoch den Umfang dieses Artikels sprengen. Die Dokumentation der Entwickler bietet aber sehr gute und detaillierte Informationen [1].
Welche Meldungen an eine Destination weitergeschickt werden, wird über einen Filter definiert. Dabei ist es nicht nur möglich, nach der Facility und der Priorität zu filtern, sondern es können unter anderem auch reguläre Ausdrücke auf den Nachrichtentext angewendet werden.
filter f_sexample {
priority(err...emerg);
match("test");
};
Dieser Filter würde auf alle Meldungen passen, die vom Level error bis emergency sind und im Nachrichtentext "test" enthalten. Da das Filter-Objekt sehr mächtig ist, sollen an dieser Stelle noch einige Möglichkeiten aufgezeigt werden. Zu den im Beispiel schon genannten Funktionen kommen noch folgende hinzu
Eine Destination ist im einfachsten Fall eine Datei. Es ist also das Ziel gemeint, an das die Meldungen geschickt werden sollen. Im folgenden Konfigurationsabschnitt wird das Ziel d_messages definiert, hinter dem sich die Datei /var/log/messages verbirgt.
destination d_messages {
file("/var/log/messages");
};
Als Ziel muss aber nicht immer eine Datei definiert werden, auch andere Ziele sind möglich: Wählt man als Ziel z. B. usertty("root"), werden die Meldungen an das Terminal vom User root geschickt.
Schlussendlich werden die einzelnen Objekte in einer Log-Anweisung zusammengefasst. Erst hier wird festgelegt, welche Meldungen, von welchen Quellen, an welche Ziele geschickt werden sollen.
log {
source(s_src);
filter(f_example);
destination(d_messages);
};
So können flexibel verschiedene Source-, Filter- und Destination-Objekte kombiniert werden. Das ermöglicht es, die Meldungen schon im Vorfeld sinnvoll auf verschiedene Dateien aufzuteilen und uninteressante Meldungen herauszufiltern.
Der syslog-ng erlaubt wesentlich mehr Filtermöglichkeiten als der alte Syslog-Daemon und er hat sich in den letzten Jahren zum Standard in vielen Distributionen entwickelt. Und da unserer Erfahrung nach nichts gegen den Einsatz spricht, können wir Ihnen den syslog-ng uneingeschränkt empfehlen.
Im nächsten Teil des Artikels möchten wir darauf eingehen, welche Vorteile das zentrale Speichern von Log-Meldungen bietet und welche Möglichkeiten es gibt, die Log-Meldungen verschlüsselt über das Netzwerk zu übertragen.
Marius Dorlöchter (info@ordix.de).