Syslog-ng statt dem alten Syslogd

Lohnt sich der Umstieg auf Syslog-ng? Ja, auf jedenfall. Syslog-ng bietet nicht nur wesentlich besser Filtermechanismen, sondern unterstützt beim Loggen über das Netzwerk nicht nur udp sondern auch tcp Datenverkehr, oder sogar Loggen in eine SQL-Datenbank. Wenn man stolzer Besitzer von Debian ist hat man es leicht ein aptitude install syslog-ng installiert nicht nur syslog-ng sondern entfernt auch den alten syslogd und klogd. Nach der erfolgreichen Installation ist Syslog-ng bereits Einsatzfähig, da Debian eine vordefinierte Konfigdatei liefert, in der die wichtigsten Logdateien auth.log, syslog, cron.log, daemon.log, kern.log, lpr.log, mail.log, user.log und uucp.log bereits eingetragen sind.
Syslog-ng ist Modular aufgebaut mit verschiedene Konfigurationsblocks die untereinander genutzt werden.

1. Konfigurationsblock: options
Hier werden allgemein gültige Optionen für Syslog-ng definiert.
Doku: options

2. Konfigurationsblock: source
In diesem Block werden die Logquellen angegeben, d.h. z.B. /dev/log oder /proc/kmsg. So könnte man jeden Dienst der von Haus aus kein Syslog unterstützt einbinden, indem man seine Logdatei als Quelle enbindet.
Beispiel:

source s_all {
        internal();
        unix-stream("/dev/log");
        file("/proc/kmsg" log_prefix("kernel: "));
};

Doku: source

3. Konfigurationsblock: destination
In diesem Block wird das Ziel für das Logging definiert, normalerweise endet das Logging in einer Logdatei, es könnte aber auch per tcp weiter an einen Logserver oder per SQL in eine Datenbank geloggt werden. Besondere Beachtung sollte der Option template() schenken, da man mit dieser das Ausgabeformat einer Lognachricht angeben kann. Durch verschiedene Macros wie z.B. $YEAR, $PROGRAM oder $FACILIRY kann man ein beliebiges Format erstellen. Vorsicht aber bei Loganalyse-Tools diese kommen mit einem eigenen Format oft nicht klar, da sie auf das Syslogd-Format oder Dienst eigene Formate zugeschnitten sind.
Beispiel:

destination df_syslog { 
  file("/var/log/syslog");
};

Doku: destination

4. Konfigurationsblock: filter
Im filter Block wird angegeben was aus dem Logstream ausgefiltert werden soll. Man kann hier nach verschiedenen Kriterien filtern z.B. Loglevel oder Logfacility.
Beispiel:

filter f_syslog { 
  not facility(auth, authpriv); 
};

Doku: filter

5. Konfigurationsblock: log
Hier werden die vorher definierten Blocks miteinander kombiniert. Angenommen man möchte gerne die Datei /var/log/syslog erzeugen, würde man die source wählen, in der alle Logs auflaufen, den filter in denen Logfacility auth und authpriv nicht angezeigt werden und das Ziel, dass eine Datei /dev/log/syslog beschreibt.
Beispiel:

log {
        source(s_all);
        filter(f_syslog);
        destination(df_syslog);
};

Doku: log

Nun könnte man aus verschieden gestalteten Blöcken ein gut strukturiertes Logging aufziehen. Beachtet, dass die vordefinierten Blöcke von Debian erhalten bleiben, da die dort erstellten Logdateien essentiell für das Linuxsystem sind.

Die komplette Doku von Syslog-ng findet ihr hier im HTML-Format.

Post new comment

  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockcode>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options