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.
Links
vorhandene Systemprotokolle im /var/log
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.
Grundlagen
Prioritäten
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.
Facility
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) |
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 |
eigenes Log-file
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
- den Daemon (Dienst) auf eine Facility konfigurieren (das muss er natürlich unterstützen!)
- syslogd konfigurieren
- 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:
sudo /etc/init.d/sysklogd restart
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.
LogHost
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.
Links
logger
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