3.2 Logs
Log Dateien enthalten Informationen über das laufende System inklusive Kernel, Services und laufenden Applikationen. Logs können beim Troubleshooten eines Problems extrem hilfreich sein, da sie Auskunft über Fehler, Events und Miskonfigurationen geben.
Inhalt
Logging Mechanismen
Traditionell werden Logs von rsyslog
verwaltet, welcher die Möglichkeit bietet, Logs zu filtern, verschlüsseln und über das Netzwerk weiter zu leiten. Seit der Einführung von systemd
werden Logs immer mehr von dessen Logging Daemon journald
übernommen. Im Gegensatz zu den Logdateien, welche von rsyslog
verwaltet werden, speichert journald
die Daten im Binary Format ab und müssen deshalb mit einem speziellen Tool journalctl
ausgelesen werden. rsyslog
Logdateien werden als Textdateien gespeichert und befinden sich, wenn unter /etc/rsyslog.conf
nicht anders spezifiziert, unter /var/log/
.
journald
Um mit journald
zu interagieren verwendet man den Befehl journalctl
. Um journalctl
besser kennen zu lernen, probiere folgende Aufgaben zu lösen.
Journald Aufgaben
Zeige alle Logs an
Lösung
journalctl
Zeige alle Logs an, neuste zuerst
Lösung
journalctl -r
Zeige die neusten 10 Logeinträge an:
Lösung
journalctl -n 10
Zeige Log Nachrichten ab jetzt an:
Lösung
journalctl -f
Zeigt alle Logs vom Service
sshd
an:Lösung
journalctl -u sshd.service
Zeige erfolgreichen Logins via
ssh
an:Lösung
journalctl -u sshd | grep Accepted
Zeige alle Kernel Logs an:
Lösung
journalctl -k
Zeige Logs mit der Priorität Error an:
Lösung
journalctl -p err
gibt Logs aus die mit dem Binary
/usr/bin/bash
zu tun haben:Lösung
journalctl /usr/bin/bash
Zeige Logs seit dem letzten Boot an:
Lösung
journalctl -b
Gebe alle Logs von heute, von heute ab 08:00, von heute ab 08:00 bis 10:15, von heute 08:00 bis vor einer Stunde und von heute 08:00 vom Service
sshd
aus:Lösung
journalctl --since today journalctl --since "2020-06-01 08:00:00" journalctl --since "2020-06-01 08:00:00" --until "2020-07-01 10:15:00" journalctl --since 08:00 --until "1 hour ago" journalctl --since 08:00 -u sshd
/var/log
Wie wir bereits gelernt haben, liegen unter /var/log
in der Regel die Logdateien, welche nicht von journald
verwaltet werden. Diese Logdateien sind meist ganz normale Textfiles. Wie man mit diesem umgeht haben wir ja bereits im commandline
Lab gelernt. Um die vielleicht eher unverständlichen SELinux
Logmeldungen in der Datei /var/log/audit/audit.log
zu verstehen, lohnt es sich das Tool audit2why
anzuschauen.
Logrotate
logrotate
ist ein Tool, welches sicher stellt, dass die Dateigrösse der Logfiles unter /var/log/
nicht zu gross werden. Die Konfiguration von logrotate
befindet sich unter /etc/logrotate.conf
resp. /etc/logrotate.d/
. Weitere Infos unter 23.2.5 der RedHat Dokumentation
journalctl Grösse in den Griff kriegen
Um das Journal in den Schranken zu halten, kann die maximale Grösse unter /etc/systemd/journald.conf
konfiguriert werden. Siehe dazu man 5 journald.conf
.
Braucht man kurzfristig mehr Speicherplatz und ist sich sicher, dass man alte Logs wegräumen will hilft die --vacuum*
Option von journalctl
:
|
|
Remote Logs
Um Logs zu sichern, archivieren, konsolidieren, auszuwerten oder einfach sonst wo zu speichern gibt es verschiedene Tools, welche Logs an andere Server senden. Bsp: fluentd
, rsyslog
, promtail
, etc…
Loki / Promtail
Bei Puzzle ITC verwenden wir seit kurzem Loki und Promtail um Logs zentral zu verwalten. loki
ist der Serverteil, welcher die Logs indiziert und speichert. Dieser Server wird für den User als Datenquelle im Grafana eingebunden, wo man sich die Logs dann anschauen kann. promtail
ist der Client, welcher auf jedem Server installiert ist und die Logs an den loki
Server sendet. Weitere Infos zu Loki findet man hier: Loki Docs