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
journalctlZeige alle Logs an, neuste zuerst
Lösung
journalctl -rZeige die neusten 10 Logeinträge an:
Lösung
journalctl -n 10Zeige Log Nachrichten ab jetzt an:
Lösung
journalctl -fZeigt alle Logs vom Service
sshdan:Lösung
journalctl -u sshd.serviceZeige erfolgreichen Logins via
sshan:Lösung
journalctl -u sshd | grep AcceptedZeige alle Kernel Logs an:
Lösung
journalctl -k
Zeige Logs mit der Priorität Error an:
Lösung
journalctl -p errgibt Logs aus die mit dem Binary
/usr/bin/bashzu tun haben:Lösung
journalctl /usr/bin/bashZeige Logs seit dem letzten Boot an:
Lösung
journalctl -bGebe 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
sshdaus: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