journald (Systemd)

RHEL setzt seit Version 6 auf Rsyslog als Syslog-Client und Server, welches das ursprüngliche syslogd-Modell erweitert. Seit RHEL 7 können Log-Daten auch von journald, einer Komponente von systemd verwaltet werden. journald mit seiner journalctl-Komponente erlaubt eine sehr detaillierte Untersuchung über alle Log-Ausgaben eines Systems, die bequemer ist und deren Ergebnisse dank zusätzlicher Meta-Daten genauer als die „alte“ Methode mittels tail/cat/grep sind. Auf RHEL 7 existieren beide Loggings-Tools nebeneinander.

journalctl Cheat Sheet

Logs anzeigen. Die journalctl-Datenbank wird mit Hilfe von less angezeigt

journalctl

Logs für ein Device:

journalctl /dev/vda

Die 10 neuesten Log-Meldungen anzeigen:

journalctl -10

Live-View analog zu tail -f:

journalctl --follow

Alles laufend als JSON:

journalctl --output=json --follow

Wie oben, aber Output durch andere Tools bearbeiten lassen:

journalctl --output=json --follow | journal2gelf

Bemerkung

journald schneidet Nachrichten nach 16 KB ab. Interessant für die, die z.B. JSON-Nachrichten an einen zentralen Log-Server über journald weiterreichen.

Filter, beispielsweise Meldungen auf Units und Zeiträume einschränken:

journalctl --unit=sshd
journalctl --since "2015-06-26 23:15:00" --until "2015-06-26 23:20:00"
journalctl --priority err

Boot-Meldungen anschauen:

journalctl --list-boots
journalctl --boot 00552ebbabad42c3a439a303138914ee
journalctl --boot _SYSTEMD_UNIT=httpd.service _PID=5874

Um die Datenbank persistent vorzuhalten, das Log-Verzeichnis für journalctl anlegen und den Dienst umkonfigurieren:

mkdir -p /var/log/journal
sed --in-place='s/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
systemctl restart systemd-journald.service

Die persistenten Log-Dateien aufräumen - die letzten 10 Tage oder 2 GB an Daten behalten:

journalctl --vacuum-time=1d
journalctl --vacuum-size=500M
journalctl --disk-usage

Journal-Einträge verschlüsselt forwarden:

dnf -y install systemd-journal-remote
mkdir /tmp/journal
journalctl --output export | /usr/lib/systemd/systemd-journal-remote --output /tmp/journal/example.journal -

Built on 2024-04-18