linux:systemprotokolle

Systemprotokolle (Logdateien) in Linux (Syslog)

Linux und andere Unix-basierte Systeme glänzen durch ausführliche und anpassbare Systemprotokolle. Zur Fehlerdiagnose sind diese Logs meist die erste Anlaufstelle. Diese Seite basiert auf dem Standard syslog (daemons: syslogd, klogd), es existiert ein verbesserter Nachfolger unter dem Namen syslog-ng.

Bei modernen Distributionen wird das logging von systemd übernommen und diese Seite ist daher nicht anwendbar.

Im Verzeichnis /var/log befinden sich die wichtigen Systemprotokolle.

Dateiname in /var/log Bedeutung / Quelle
aptitude
auth.log
boot
bootstrap.log
btmp
daemon.log
debug
dmesg
dpkg.log
faillog
fsck
kern.log Meldungen des Kernels
lastlog
lpr.log
mail.err
mail.info
mail.log
mail.warn
messages
news
syslog Meldungen der Prioritäten warning und error
user.log
uucp.log
vsftpd.log
wtmp

Bei Systemen die nicht gerade erst neuinstalliert wurden, finden sich auch Dateien wie syslog.0 und syslog.1.gz . Ältere Protokolle werden nach einger gewissen Zeit „rotiert“, also zuerst umbenannt (syslog.0) und später gepackt (archiviert.

Einige Programme (Apache, …) legen auch Unterverzeichnisse an.

Die Prioritäten sind nach nach ansteigender Wichtigkeit geordnet.

Priorität Bedeutung
debug Debugging Informationen zu laufenden Prozessen
info Normale Informationsmeldungen von Programmen
notice Standardmeldungen, aber wichtiger als nur Informationscharakter
warn Standardwarungen (das System oder die Ressource konnte z. B. die Aufgabe nicht ausführen)
err Meldungen bestehen aus Fehlerzuständen
crit Fatale Fehler
alert bezeichnet einen ernstzunehmenden Fehler, die sofortige Aufmerksamkeit verlangen
emerg Notfall, kurz vor einer Kernel-panic (z.B. bei Treiberabsturz) und/oder System nicht länger verfügbar

:!: Die Aliase „error“, „panic“, und „warning“ sind veraltet.

Eine „Facility“ ist eine Einrichtung die einem eigenen Subsystem (Untersystem) entspricht. Es gibt 13 vordefinierte Subsysteme: auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, syslog, user und uucp. Zusätzlich kann man noch local0 bis local7 für eigene Programme definieren (wie unten im Beispiel).

Facility Bedeutung
auth eine Sicherheitsfunktion, die Benutzerauthentifizierung in verschiedenen Diensten wie ftp, login usw verfolg. (Im Wesentlichen verfolgt die auth-Funktion jede Benutzeraktion, die in denen Benutzernamen und ein Passwort verlangt wird, um sich einzuloggen oder die Ressourcen des Zielrechners zu benutzen.)
authpriv eine Sicherheitsfunktion, die Sicherheits-/Autorisierungmeldungen verfolgt
daemon verfolgt Systemdämon Meldungen
user verschiedene user-level Meldungen
kern verfolgt Kernel Meldungen
ftp verfolgt Meldungen vom ftp-System
cron verfolgt Meldungen vom cron-System.
lpr verfolgt Meldungen des Druckersystems
mark Sollte man nicht benutzen, zu internen zwecken (Meldung wenn nichts passiert ist)
mail verfolgt Meldungen des Mail-Systems
news verfolgt Meldungen des News Systems
security dasselbe wie auth
syslog für von Syslog generierte Nachrichten
uucp verfolgt Meldungen des UUCP Systems

Standardmäßig wird ins syslog (/var/log/syslog) protokolliert, man kann aber eigene Log-Dateien für z.B. für den DHCP-Server anlegen lassen. Dazu muss man grundsätzlich

  1. den Daemon (Dienst) auf eine Facility konfigurieren (das muss er natürlich unterstützen!)
  2. syslogd konfigurieren
  3. und beide Daemons neustarten.

Am Beispiel des DHCP-Servers „DHCP3“ konfigurieren wir nun unter Linux unser eigenes Logfile.

Zuerst muss die Zeile

  log-facility local7;

in der Konfigurationsdatei (/etc/dhcp3/dhcpd.conf) eingetragen werden.

Für diese „facility“ mit dem Schlüsselwort local7 muss man in der Datei /etc/syslog.conf einen Eintrag anlegen.

local7.*                   /var/log/dhcpd.log

Der Stern sorgt dafür, dass Nachrichten mit allen Prioritäten im Log-file gesichert werden. Danach sollte man die Log-Datei mit

 touch /var/log/dhcpd.log

anlegen lassen.

Letztendlich muss man den syslog- und DHCP3-Daemon zur Übernahme der Änderungen in der angegebenen Reihefolge neustarten:

  1. sudo /etc/init.d/sysklogd restart
  2. sudo /etc/init.d/dhcp3-server restart

Die erste Ausgaben in der Log-Datei bezeugen die erfolgreiche Funktion.

Siehe man syslog.conf für weitere Informationen. Die Konfiguration von Konfiguration sieht natürlich anders aus.

Als LogHost wird ein spezieller Server bezeichnet, der für andere Rechner die Logdateien führt. Dies kann bei Festplattenlosen Thin-clients oder generell zur Erhöhung der Sicherheit sinnvoll sein.

Eine einzige Zeile in /etc/syslog.conf reicht: *.* @remote_host Wenn man ganz clever sein will, kann man den remote_host als Dummy aufsetzen und den Verkehr auf dem Weg abhören.

Aus Sicherheitsgründen sollte dann aber syslog-ng benutzt werden. Dieser kommuniziert über TCP und kann mit Zertifikaten umgehen. Der originale syslog-daemon schickt die Log-einträge per UDP und der Log-host kann auch nicht die Herkunft verifizieren.

Mit dem Programm logger kann man syslog oder syslog-ng Nachrichten übergeben.

logger TEXT 

Zusätzlich kann man mit

  • Kategorie und Priorität (z.B. user und notice)
    logger -p user.notice TEXT
  • und den „Tag“ (für einen Dienst) angeben:
    logger -p user.notice -t TAG TEXT