12 Syslog
Dieses Kapitel stellt Ihnen die drei bewährten Syslog-Server »SyslogD«, »Syslogng«, »Rsyslog« und deren Konfiguration vor. Aber auch der »systemd« mit dem »journalctl« wird in diesem Kapitel behandelt.
Das Syslog-Protokoll und seine erste Implementation stammen aus der BSD-Welt. Eric Allmann entwickelte sie als Logging-Instanz für Sendmail. Syslog wurde erst 2001, viele Jahre nach seiner Entstehung, in den RFCs 3164 und 3195 dokumentiert, und auch diese Standarddokumente lassen noch reichlich Spielraum für die Kreativität der Entwickler. Aus diesem Grund gibt es heute mehrere Syslog-Implementationen, die in ihrer grundlegenden Funktionalität miteinander kompatibel sind, aber auch Besonderheiten und oft nützliche Erweiterungen enthalten.
Das Syslog-Protokoll benutzt im Netzwerk UDP auf Port 514. Aktuellere Syslog-Implementationen, die im weiteren Verlauf dieses Kapitels beschrieben werden, beherrschen auch den Transport per TCP.
Neu in der Runde der System-Logs ist der systemd mit dem Kommando journalctl. Auf diesen Logging-Mechanismus werden wir in dieser Auflage zum ersten Mal genauer eingehen. Da alle von uns hier eingesetzten Distributionen diesen Dienste nutzen, ist es gut, wenn Sie sich auch mit ihm auseinandersetzen. Bei SUSE Leap ist es sogar so, dass der systemd bereits als Standard eingesetzt wird, eine Datei /var/log/message finden Sie dort gar nicht mehr. Nur wenn Sie einen der klassischen Log-Dienste zusätzlich installieren und aktivieren, werden Sie diese Datei wiederfinden und auswerten können.
Auf die Dauer werden alle Distributionen ganz oder zumindest zum größten Teil auf den systemd umstellen. Dann wird dieses Wissen noch wichtiger.
12.1 Aufbau von Syslog-Nachrichten
Alle Prozesse generieren mehr oder weniger Meldungen zu ihrem Zustand, bestimmten Aktionen oder aufgetretenen Fehlern. Jede Nachricht wird dann, abhängig von dem verwendeten Log-System, in eine Datei oder wie im Falle von systemd in eine Binärdatei geschrieben. Eine Syslog-Nachricht besteht dabei aus drei Teilen. Dies sind:
-
>der Priority-Selektor: Dieser nur ein Byte große Selektor enthält zwei Felder; beide kodieren einen Zahlwert. Das erste Feld enthält die sogenannte Facility (etwa: Quelle, Herkunft), das zweite die Severity (»Log-Level«, etwa: Wichtigkeit). Die Facility gibt an, wo der Schuh drückt, und die Severity beschreibt, wie sehr es schmerzt. Allein der Priority-Selektor gibt dem Admin also einen ersten Eindruck von der Situation: Bekommt er nur eine belanglose Information, oder steht das System kurz vor der Kernschmelze?
-
der Header: Er enthält die IP-Adresse des absendenden Systems und einen Zeitstempel. Der Zeitstempel wird vom empfangenden Syslog-Daemon gesetzt, nicht vom Absender.
-
die Nachricht: Hier steht die eigentliche Meldung. Das Syslog-Protokoll sieht dafür eine Länge von maximal 1.024 Bytes vor.
In Tabelle 12.1 sehen Sie die wichtigsten Syslog-Quellen und deren Bedeutung.
Facility | Bedeutung |
---|---|
LOG_KERN | Kernelmeldungen |
LOG_USER | Meldungen von Userspace-Programmen |
LOG_MAIL | Mail-Subsystem |
LOG_DAEMON | Serverdienste |
LOG_SYSLOG | Syslog-interne Meldungen |
LOG_LPR | Druckersubsystem |
LOG_NEWS | Usenet-Server |
LOG_CRON | Meldungen des Cron-Daemons |
LOG_AUTHPRIV | Login- und Autorisierungsmeldungen |
LOG_LOCAL0 – LOG_LOCAL7 | reserviert für lokale Nutzung |
Tabelle 12.1 Die wichtigsten Syslog-Quellen (Facilitys)
In Tabelle 12.2 sind die acht Log-Level des Syslog und deren Bedeutung aufgeführt.
Level | Bedeutung |
---|---|
LOG_EMERG | Das System ist unbenutzbar. |
LOG_ALERT | Alarm, schnelles Handeln erforderlich |
LOG_CRIT | kritischer Fehler |
LOG_ERR | normaler Fehler |
LOG_WARNING | Warnung |
LOG_NOTICE | wichtige Benachrichtigung |
LOG_INFO | Benachrichtigung |
LOG_DEBUG | Informationen für Entwickler, Hilfe bei der Fehlersuche |
Tabelle 12.2 Log-Level
In Tabelle 12.3 sehen Sie, welcher Syslog-Dienst von welcher Distribution standardmäßig verwendet wird.
Distribution | Syslog-Dienst |
---|---|
Debian | systemd und rsyslogd |
Ubuntu | Alarm, systemd und rsyslogd |
CentOS | systemd und rsyslogd |
SUSE Leap | systemd |
Tabelle 12.3 Log-Level
Wie Sie hier sehen, verwenden alle Systeme bereits den systemd zusammen mit dem journalctl. Wollen Sie eines der anderen hier im Buch beschriebenen Log-Systeme verwenden, müssen Sie den Dienst immer installieren.