Logging per syslogd
syslogd ist der Daemon, der einige der unter Linux üblichen Logdateien schreibt, z.B. /var/log/messages oder /var/log/syslog. Er kann dazu sowohl von lokalen Prozessen, als auch (bei entsprechender Konfiguration) von Prozessen anderer Maschinen über TCP/IP kontaktiert werden.
Für die Konfiguration ist /etc/syslog.conf zuständig.
Für die Meldungen des Kernels wird klogd eingesetzt. Auf selflinux.de findet man ein relativ ausführlichen Artikel zu syslog, indem auch die beschrieben wird wie man sich einen loghost baut.
Kann ich selber Meldungen ins Systemlog (syslog) schreiben (lassen)?
Natürlich. z.B. mit Perl:
use Sys::Syslog; openlog($program, 'cons,pid', 'user'); syslog('info', 'Hello world'); closelog();
Für die KommandoZeile und für ShellScripte gibt es das Programm logger.
Tipps
- Wer einen komfortableren Syslog haben möchte, schaue sich mal syslog-ng an. Hiermit kann man beliebige Ausgabe-Formate einstellen. Auch kann man mitloggen, welches Programm den Syslog-Eintrag vorgenommen hat. Das ist oft genauer als die Facilitys. Die Konfiguration ist sehr einfach und mächtig. Syslog-ng soll mittelfristig den in die Jahre gekommenen syslog ablösen.
Infos auch im Linux-Magazin 11.2003: http://www.linux-magazin.de/Artikel/ausgabe/2003/11/tagebuch/tagebuch.html
Eine Einführung in den syslog-ng: http://www.wikidorf.de/reintechnisch/Inhalt/SyslogNGEinfuehrung
Ausführlich Beschreibung zu Syslogd
Vorbemerkungen
Alle wichtigen Systemprogramme, die im Hintergrund laufen, sogenannte Daemons, der Kernel und manche Userprogramme schicken Nachrichten über ihre Aktivitäten an syslogd. Dies ist selbst ein Daemon. Er vergleicht die ankommende Meldung mit den Einträgen seiner Konfigurationsdatei und verteilt die Nachricht entsprechend.
Auf den meisten Linux (UNIX) - Systemen gibt es ein Verzeichnis für die Log-Dateien. Meist liegen sie unter /var/log/... Die bekannteste Datei ist sicherlich /var/log/messages, in die alle mögichen Informationen landen. Auf vielen Systemen gibt es noch die /var/log/mail bzw. /var/log/sendmail, aber auch der Kernel schreibt Logs, es gibt Bootlogs usw. All diese Dateien helfen beim Überwachen und Administrieren des Systems. Geht was nicht wie es soll, der erste Blick ist in die entsprechende /var/log/xxx.
Syslogd
Wie kommen nun die Meldungen in die Datei?
Auf jedem Linux-System gibt es einen Syslog-Dämon, der die Nachrichten, die an ihn gerichtet sind entgegennimmt und sie entsprechend weiterleitet. Welche Meldung wohin kommt, wird in der Datei /etc/syslog.conf festgelegt. Die Datei ist eigentlich nicht schwierig zu verstehen, ansonsten man syslog.conf konsultieren.
Mit der Datei /etc/syslog.conf habe ich als Systemverwalter die Möglichkeit zu bestimmen, welche Meldungen von welchem Subsystem mit welcher Priorität wohin kommen. Das können nicht nur Dateien sein, es kann die Konsole, aber auch ein Programm sein, so daß z.B. eine Meldung mit der Priorität emerg per SMS, Mail usw. verschickt werden kann. Es ist mit entsprechender Konfiguration auch möglich, einen zentralen LogServer aufzubauen, dessen syslogd alle Meldungen der syslogds im Netzwerk entgegennimmt und die Meldungen entsprechend weiterverarbeitet.
Parameter
Über die mitgegebenen Parameter System.Priorität (facility.level) kann syslogd mit Hilfe von /etc/syslog.conf entscheiden, was wohin kommt.
Parameter (Sub-)System (facility)
- Syslogd kennt folgende (Sub-)Systeme bzw. facility-Schlüsselworte
- facilit auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security (ist das gleiche wie auth), syslog, user, uucp sowie local0 bis local7. local0 bis local7
Parameter Prioritäten (level)
- Syslogd kennt folgende Prioritäten-Schlüsselworte
- debug, info, notice, warning, warn (== warning), err, error (== err), crit, alert, emerg, panic (== emerg).
Veraltete Prioritäten-Schlüsselworte wie error, warn und panic sollen nicht mehr benutzt werden.
Fragen
Frage: Wie finde ich heraus, was eine Meldung in /var/log/messages bedeutet? -- HenrykGerlach 2004-05-20 20:33:08
Jedes Programm darf etwas dort hineinschreiben, es gibt eine grundlegende Syntax, wo Typ und Herkunft der Message geregelt ist. Alles andere ist Sache des jeweiligen Programms. Du musst also in der Beschreibung der jeweiligen Anwendung nachschauen. Oft ist auch das Durchsehen des Quellcodes nach diesen Logmessages sinnvoll. Programmierer sind oft zu faul, alle Logmessages und deren Bedeutung zu dokumentieren. -- WinfriedMueller
Frage: Was bedeuten """audit:""" Meldungen im syslog?