Dieses Handbuch wird mit freundlicher Genehmigung von Sebastian Hetze auf den Servern der Linux Information Systems AG gehosted.

next up previous contents index
Next: Recompilieren des Kernels Up: Systemverwaltung Previous: Der Batchdämon crond

Subsections


Der Protokollschreiber syslogd

   

Das Betriebssystem (der Kernel) und seine Prozesse auf der Benutzerebene (Dämonen, Kinder von init) sind mit keinem Benutzerterminal direkt verbunden. Diese Selbständigkeit wird dann zu einem Problem, wenn ein solcher Prozeß eine Nachricht, beispielsweise eine Fehlermeldung, ausgeben will/muß. Die Kanäle für die Standardausgabe und die Standardfehlerausgabe sind bei den Systemprozessen mit der Gerätedatei /dev/console verbunden. Die Ausgabe für dieses Gerät wird auf dem Bildschirm der Systemconsole direkt ausgegeben; unter X11 kann sie im xconsole-Fenster angezeigt werden.

Im Mehrbenutzerbetrieb ist die Methode, eine Systemmeldung ausschließlich als Fehlermeldung auf die Systemconsole zu schreiben, unbefriedigend. Es kann nicht sichergestellt werden, daß die Meldung von der ,,richtigen`` Person gelesen wird. Die Bildschirmmeldungen lassen sich nicht sichern und gehen so extrem leicht verloren.

Eine sehr umfassende Lösung dieses Problems bietet der syslogd (gesprochen süslog-d) an. Allerdings muß dieser Lösungsweg bereits bei der Programmierung des Systemprogramms eingeschlagen werden. Wegen der eindeutigen Vorteile arbeitet bereits ein großer Teil der Linux-Systemprogramme mit dem syslogd zusammen.

Anstelle der direkten Ausgabe einer Meldung mit fprintf(3) oder einer vergleichbaren C-Bibliotheksfunktion können Systemmeldungen von spezieller Bedeutung mit der syslog(3)-Funktion ausgegeben werden, die Bestandteil der Standardbibliothek des gcc für Linux ist.

Solche Meldungen werden dann automatisch vom syslogd entgegengenommen.[*]

Der syslogd erhält die Nachrichten über das Socket /dev/log und über die Spezialdatei /proc/kmsg. Er liefert die Meldung nach den Regeln aus, die die Systemverwalterin in der Konfigurationsdatei /etc/syslog.conf festgelegt hat.

Die Datei /etc/syslog.conf

  Der Dreh- und Angelpunkt der syslog-Installation ist die Datei /etc/syslog.conf. In dieser Konfigurationsdatei werden für verschiedene Klassen von Nachrichten verschiedene Auslieferungswege bestimmt.

Zur Klassifizierung gibt die Systemprogrammiererin jeder Syslognachricht zwei Merkmale: Herkunft und Priorität.

Für jede Herkunftskategorie können Nachrichten ab einer bestimmten Priorität auf einen Auslieferungsweg geschickt werden.

Als Herkunft kommen folgende Bereiche in Frage:

kern
für die Systemmeldungen direkt aus dem Betriebssystemkern.
auth
für Meldungen der Sicherheitsdienste (login u. ä.).
authpriv
für vertrauliche Meldungen der internen Sicherheitsdienste.
mail
für Meldungen des Mailsystems.
news
für Meldungen des Nachrichtendienstes.
uucp
für Meldungen des Fernkopierers.
lpr
für Meldungen des Druckerdämons.
cron
für Meldungen des crond.
syslog
für Meldungen vom syslogd selbst.
daemon
für Meldungen des unbekannten Dämons.
user
für Meldungen aus normalen Anwenderprogrammen.
local0-7
frei verwendbar für Nachrichten lokaler Bereiche.

Die Prioritäten (von der höchsten zur niedrigsten):

emerg
für den letzten Spruch vor dem Absturz.
alert
für alarmierende Nachrichten, die sofortiges Eingreifen erfordern.
crit
für die Meldung kritischer Situationen, die gerade noch gut gegangen sind.
err
für Fehlermeldungen aller Art.
warning
für Warnungen vor Hunden, Käfern und anderen Gefahren.
notice
zur Dokumentation besonders bemerkenswerter Situationen im Rahmen des normalen Betriebs.
info
für die Protokollierung des normalen Betriebsgeschehens.
debug
zur Mitteilung innerer Programmzustände bei der Fehlersuche.
none
ist keine Priorität im eigentlichen Sinne, sondern dient dazu, alle Nachrichten einer Herkunftskategorie von einem Transportweg auszuschließen.

Die Nachrichten können auf vier verschiedene Weisen ausgeliefert werden:

1.
können sie in eine Datei geschrieben werden. Dazu wird der Dateiname mit absolutem Pfad angegeben (mit einem Slash `/' beginnend).
2.
können sie an den syslogd eines anderen Rechners im lokalen Netz weitergeleitet werden. Dazu wird der Zielrechnername, eingeleitet von einem `@'-Zeichen, angegeben.
3.
können die Nachrichten an bestimmte Systembenutzer geschickt werden. Die Benutzernamen müssen dazu in einer durch Komma getrennten Liste aufgeführt werden. Die Nachricht wird den aufgelisteten Benutzern angezeigt, sofern diese im Augenblick des die Nachricht auslösenden Ereignisses eingeloggt sind.
4.
können sie an alle eingeloggten User geschickt werden, indem ein Asterisk `*' anstelle des Usernamens angegeben wird.

Ein Eintrag in der syslog.conf besteht aus einer Zeile mit einem Herkunft.Priorität-Paar (durch einen Punkt voneinander getrennt) und einer Wegdefinition. In einem Herkunft.Priorität-Paar können auch mehrere Herkunftskategorien durch Komma getrennt aufgelistet werden. Außerdem können mehrere Herkunft.Priorität-Paare durch Semikolon getrennt in einer Zeile für einen Weg angegeben werden. Sowohl Herkunft als auch Priorität können durch einen Asterisk `*' als Wildcard ersetzt werden.

Kommentare können mit dem `#' eingeleitet werden.

Beispiele:

# Alle Kernelmessages, sowie die Nachrichten der Sicherheitsdienste
# mit der Priorität notice oder höher und alle Nachrichten mit
# der Priorität err und höher werden auf der Systemconsole
# angezeigt.
# Die vertraulichen Nachrichten des Sicherheitsdienstes werden von
# dieser Anzeige ausgeschlossen.

kern.*;auth.notice;*.err;authpriv.none                    /dev/console 

# Alle Nachrichten mit Priorität info und höher, außer den Nachrichten
# des Mailsystems und des privaten Sicherheitsdienstes, werden in der
# Datei /usr/adm/Logbuch mitgeschrieben.

*.info;mail.none;authpriv.none                        /usr/adm/Logbuch

# Die Nachrichten des privaten Sicherheitsdienstes kommen in eine
# sichere Datei.

authpriv.*                        /home/she/privat/.sicher/Nachrichten

# Alle Nachrichten mit Priorität emerg werden allen eingeloggten
# Usern sofort angezeigt, und sie werden an den syslogd eines anderen
# Rechners weitergeleitet.

*.emerg                                                              *
*.emerg                                               @soho.lunetix.de

# Die Nachrichten der Priorität alert und höher werden den
# verantwortlichen Systemadministratoren angezeigt, wenn sie gerade
# eingeloggt sind.

*.alert                                                       root,she

# Die kritischen Fehlermeldungen des News- und Mailsystems werden in
# der Datei /usr/adm/Kommunikationsstoerung gespeichert

uucp,mail,news.crit                    /usr/adm/Kommunikationsstoerung
   
next up previous contents index
Next: Recompilieren des Kernels Up: Systemverwaltung Previous: Der Batchdämon crond

Das Linux Anwenderhandbuch
(C) 1997 LunetIX