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

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

Frage: Was bedeuten """audit:""" Meldungen im syslog?

SysLog (zuletzt geändert am 2007-12-23 22:45:16 durch localhost)