Als Multitasking- und Serverbetriebssystem muß Unix eine Möglichkeit haben, die laufenden Meldungen und Vorkommnisse im Systembetrieb zu protokollieren und eventuell selbstständig auf bestimmte Dinge zu reagieren. Dazu läuft auf nahezu jedem Unix-System ein spezieller Daemonprozess, der ein Systemlogbuch schreibt, der syslogd.

Dieser Daemon empfängt Meldungen von anderen Prozessen und reagiert auf diese in unterschiedlicher Art und Weise. Das grundlegende Prinzip ist das, dass jedes Programm in der Lage ist, Meldungen bestimmter Prioritäten an den syslogd zu schicken. Das muß natürlich der Programmierer des jeweiligen Programms so festgelegt haben.

Der syslogd empfängt diese verschiedenen Meldungen und reagiert in unterschiedlicher Weise darauf, je nachdem, welche Herkunft und Priorität eine solche Meldung hat.

Wie der Daemon auf welche Meldungen reagieren soll ist selbstverständlich einstellbar, es ist die Aufgabe des Systeverwalters, eine vernünftige Einstellung vorzunehmen. Alle Anweisungen, was der Daemon tun soll, werden in der Datei /etc/syslog.conf vorgenommen.

Die Datei /etc/syslog.conf

Die Datei /etc/syslog.conf hat ein einfaches Format. Jede Zeile, die nicht mit einem Doppelkreuz (#) beginnt, beschreibt eine Regel, was mit einer Meldung geschehen soll. Das grundsätzliche Format jeder Zeile ist dabei:

Herkunft.Priorität         Aktion

Dabei können in einer Zeile sowohl mehrere Herkunftskategorien (durch Kommas getrennt) angegeben werden, als auch mehrere Herkunft.Prioritäts Paare (durch Strichpunkt getrennt). Beide Angaben können durch ein Sternchen (*) als Wildcard ersetzt werden. In diesem Fall sind dann alle Herkunftsarten bzw. alle Prioritäten gemeint.

Für Herkunft, Priorität und Aktion sind die folgenden Werte gültig:

Herkunftskategorien

kernSystemmeldungen direkt vom Kernel
authMeldungen vom Sicherheitsdienst des Systems (login, …)
authprivVertrauliche Meldungen der internen Sicherheitsdienste
mailMeldungen des Mail-Systems
newsMeldungen des News-Systems
uucpMeldungen des UUCP-Systems
lprMeldungen des Druckerdaemons
cronMeldungen des Cron-Daemons
syslogMeldungen des syslog-Daemons selbst
daemonMeldungen aller anderer Daemon-Prozesse
userMeldungen aus normalen Anwenderprogrammen
local0-local7    frei verwendbar

Prioritäten in absteigender Reihenfolge

emergDer letzte Spruch vor dem Absturz
alertAlarmierende Nachricht, die sofortiges Eingreifen erforderlich macht
critMeldung über eine kritische Situation, die gerade nochmal gut gegangen ist
errFehlermeldungen aller Art aus dem laufenden Betrieb
warn      Warnungen aller Art aus dem laufenden Betrieb
noticeDokumentation besonders bemerkenswerter Situationen im Rahmen des normalen Betriebs
infoProtokollierung des normalen Betriebsablaufes
debugMitteilungen interner Programmzustände bei der Fehlersuche
noneIst keine Priorität im eigentlichen Sinn, sondern dient zum Ausschluß einzelner Herkünfte

Eine angegebene Priorität meint immer die genannte oder eine höhere. Wenn jedoch vor der Priorität ein Gleichheitszeichen (=) steht, so ist nur die genannte Priorität gemeint.

Aktionen

Eine Aktion ist immer eine Weiterleitung einer Nachricht. Es gibt vier verschiedene Arten, wie solche Nachrichten weitergeleitet werden können:

  1. Ausgabe der Nachricht in eine Datei.
    Dazu muß als Aktion der Dateiname mit absolutem Pfad (mit führendem Slash) angegeben werden. Normalerweise wird nach jedem Schreibvorgang des Syslog-Daemons eine Synchronisation des Dateisystems durchgeführt, weil sonst evt. Nachrichten bei einem Absturz nicht mehr physikalisch in die Datei geschrieben werden. Das ist allerdings eine sehr zeitaufwendige Aktion, daher gibt es die Möglichkeit, diese Synchronisation zu übergehen. Dazu wird dem absoluten Pfadnamen ein Bindestrich (-) vorangestellt.
  2. Weiterleitung der Nachricht an einen Syslog-Daemon eines anderen Rechners im Netz.
    Dazu muß als Aktion der Rechnername des Rechners angegeben werden, an dessen Syslog-Daemon die Messages geschickt werden sollen. Dem Rechnernamen muß ein Klammeraffe (@) vorangestellt werden. Damit der angesprochene Syslog-Daemon auf dem anderen Rechner auch die Meldungen annimmt, muß er mit der Kommandozeilenoption -r (remote) gestartet worden sein.
  3. Ausgabe der Nachricht auf den Bildschirm von bestimmten Usern
    Durch die Nennung des Usernamens (oder einer durch Kommas getrennten Liste von Usernamen) wird die Nachricht auf dem Bildschirm dieser User angezeigt, sofern sie eingeloggt sind.
  4. Ausgabe der Nachricht auf den Bildschirm aller eingeloggten User
    In diesem Fall steht einfach ein Sternchen (*) im Aktionsfeld.

Beispieldatei

Im Folgenden wird eine einfache /etc/syslog.conf Datei dargestellt und die einzelnen Zeilen werden kommentiert:


# Die folgende Zeile schreibt alle Meldungen der Herkunft Kernel und der
# Priorität größer gleich Warnung (kern.warn), sowie alle Meldungen der 
# Priorität größer gleich Error (*.err) außer den Meldungen der Herkunft 
# authpriv (authpriv.none) in die Datei /dev/tty10 - das ist die Gerätedatei 
# für das Terminal, das mit Alt-F10 aktiviert wird. 

kern.warn;*.err;authpriv.none   /dev/tty10

# Alle Meldungen der Priorität emerg und höher werden allen Usern auf den Bildschirm
# geschrieben.

*.emerg                         *

# Alle Meldungen der Kategorie alert und höher werden den Usern root und efka - sofern
# sie eingeloggt sind - auf den Bildschirm geschrieben.

*.alert				root,efka

# Die nächste Zeile schreibt alle Meldungen, die vom Mail-System kommen,
# egal welcher Priorität, in die Datei /var/log/mail. Damit nicht zuoft eine
# Synchronisation des Dateisystems vorkommt, ist dem Dateinamen ein
# Bindestrich vorangestellt.

mail.*                          -/var/log/mail

# Die nächsten drei Zeilen schreiben
#  - die kritischen Meldungen des News-Systems in die Datei
#    /var/log/news/news.crit
#  - die Fehlermeldungen des Newssystems in die Datei /var/log/news/news.err
#  - die bemerkenswerten Meldungen des News Systems in die Datei
#    /var/log/news/news.notice
# Alle Dateien werden nicht sofort synchronisiert (-)

news.=crit                      -/var/log/news/news.crit
news.=err                       -/var/log/news/news.err
news.=notice                    -/var/log/news/news.notice

# Alle Warnungen, egal woher sie kommen werden in die Datei 
# /var/log/warn geschrieben. Weil es Warnungen sind wird diese Datei nach
# jedem Schreibzugriff synchronisiert, der führende Bindestrich vor dem
# Dateinamen fehlt.

*.=warn                          /var/log/warn

# Alles, außer Meldungen des Mail- und Newssystems, wird in die Datei
# /var/log/messages geschrieben.

*.*;mail.none;news.none         /var/log/messages



Schreibe einen Kommentar