Früher kam tail -f zum Einsatz, um die Ausgabe von Log-Files laufend zu verfolgen. Bei Systemd genügt ein schlichtes journalctl -f für diesen Zweck. Sie verfolgen so bei Bedarf sogar nur die Ausgaben einzelner Dienste live mit – um wieder im Beispiel zu bleiben, mit dem Befehl journalctl -u apache2 -f. Die fortlaufende Ausgabe stellen Sie mit [Strg]+[C] wieder ab.
Ausgabe in anderen Formaten
Wollen Sie ein Journal in irgendeiner Form weiterverarbeiten, so geben Sie dazu die Daten in verschiedenen Formaten aus, im einfachsten Fall als schlichte Textdatei für die Stufe Error (Listing 7). Andere Formate erzielen Sie mit dem Parameter -o oder --output und der Angabe des Formats. Die Standardausgabe heißt short und entspricht der Ausgabe von Syslog.
Listing 7
$ sudo journalctl -b -p err --no-pager >journal.txt
Die Option -o verbose führt zu einer umfangreicheren Ausgabe mit allen vorhandenen Metadaten und Feldern, wogegen -o cat zu einer gegenüber short nochmals verkürzten Ausgabe führt. Der Parameter -o short-monotonic erhöht die Präzision des Zeitstempels und erlaubt den sicheren Vergleich der Reihenfolge der Ausgaben verschiedener Quellen, der mit den üblichen Zeitangaben nicht immer zweifelsfrei gelingt.
Zum Weiterverarbeiten der Journaldaten mit Webtechnologien erzeugen Sie mit -o json oder, für Menschen besser leserlich, mit -o json-pretty eine Ausgabe in der Javascript Object Notation (JSON). Möchten Sie das Journal in binärer Form über ein Netzwerk exportieren, so hilft die Ausgabe mit -o export weiter.
Reparatur und Sicherheit
Den einzig stichhaltigen Kritikpunkt gegen binäre Log-Dateien stellen mögliche Schäden am Binärformat dar, denn eine Reparaturmöglichkeit gibt es bisher nicht. Jedoch bleiben die eigentlichen Inhalte selbst bei einem korrupten Log meist erhalten. Mit Bordmitteln wie Strings und Grep filtern Sie dann durch ein Kommando wie in Listing 8 noch Informationen heraus.
Listing 8
$ sudo strings /var/log/journal/ID | grep -i Suchbegriff
Für einen kryptografischen Schutz sicherheitskritischer Logs bringt Journal ebenfalls eine eigene Funktion mit. Sie stammt bereits aus dem Jahr 2012 und nennt sich Forward Secure Sealing. FSS erlaubt es, die Logs in zeitlich definierten Abständen zu verschlüsseln. Mit dem Befehl journalctl --setup-keys erzeugen Sie die beiden dazu nötigen Schlüssel. Anschließend drucken Sie den Schlüssel, der zur Verifikation dient, am besten aus oder transferieren ihn per QR-Code auf ein mobiles Gerät.
Fazit
Sobald der Umgang mit dem Journal-Daemon erst einmal in Fleisch und Blut übergegangen ist, dürfte kaum jemand zum Protokollieren vor Systemd zurückkehren wollen. Zu verlockend sind die ausführlicheren Logs, die wesentlich früher einsetzen und umfangreiche sowie einfache Möglichkeiten zum Auswerten bieten.
Falls Sie weiterhin das nicht binäre Format von Syslog nutzen möchten, steht dem trotzdem nichts entgegen: Mittels der Optionen ForwardToSyslog=yes und MaxLevelSyslog=debug in der Datei /etc/systemd/journald.conf leiten Sie die gesammelten Meldungen des Journals um. Dazu muss lediglich zusätzlich der Rsyslogd-Daemon laufen. Der umgekehrte Weg des Einfügens von Meldungen aus Syslog klappt über das Tool Omjournal [6].
Infos
- Systemd: https://de.wikipedia.org/wiki/Systemd
- SysVinit: https://de.wikipedia.org/wiki/SysVinit
- Rsyslog: https://de.wikipedia.org/wiki/Rsyslog
- Socket: https://de.wikipedia.org/wiki/Socket_(Software)
- Syslog Security Level: https://en.wikipedia.org/wiki/Syslog#Severity_level
- Omjournal: http://www.rsyslog.com/doc/omjournal.html





