dbus-uuidgen > /etc/machineidDies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
systemd: journal
Die „Logfiles“ im systemd sind eine binäre Datenbank mit umfassenden Suchwerkzeugen
- contra
- kein KISS Design
- schlechte post-mortem Analyse
- nicht mehr kompatibel zu alten Logauswertungen (z.B. logwatch)
- pro
- Metainfos nicht mehr fälschbar (weil vom daemon)
- Außerhalb des laufenden systemd-journald nicht mehr fälschbar (hash)
- wartungsfrei (kein logrotate)
- kann applikationsspezifische Werte aufnehmen
- umfangreiche Abfragemöglichkeiten
Files
/var/log/journal/<machine-id>← persistent/run/systemd/journal/<machine-id>← dynamisch
Die „machine-id“ steht in /etc/machine-id und wird automatisch generiert oder mit systemd-machine-id-setup. /var/lib/dbus/machine-id beachten. Man kann eine Generierung erzwingen, indem man die Datei trunkiert
> /etc/machine-id readlink /var/lib/dbus/machine-id || rm /var/lib/dbus/machine-id
Das Verzeichnis /var/log/journal muss vorhanden sein; systemd loggt andernfalls nur temporär.
journalctl
gleich ans Ende springen
journalctl -e
follow file mit allem und catalog
journalctl -f -a -x
alle Felder aufschlüsseln
journalctl -o verbose
(alle Felder, die mit '_' beginnen, sind interne Felder und werden intern vom journald gesetzt und nicht vom Client. Somit sind sie nicht leicht manipulierbar.)
seit dem letztem Boot
journalctl -b
in einem bestimmten Zeitraum
journalctl --since '2016-01-10' --until '2016-01-11 03:00'
ab einem bestimmten Level
journalctl -p 4 journalctl -p warning
Meldungen eines bestimmten Dienstes
journalctl _SYSTEMD_UNIT=ssh.service journalctl -u ssh.service journalctl /usr/sbin/sshd
Kernel Meldungen
journalctl -k
Ins Journal schreiben
genauer: stdout und stderr mit dem journal verbinden
ls | systemd-cat systemd-cat hostnamectl
Größe beschränken
Defaults für persistent: 10% filesystem. Max 4 GiB
- /etc/systemd/journald.conf
SystemMaxUse=100M SystemKeepFree=1G
Größe manuell verkleinern
Aktuelle Größe anzeigen:
journalctl --disk-usage
sollte etwa das selbe sein wie:
du -sh /var/log/journal/
So lange alte Logs löschen, bis 100M erreicht sind:
sudo journalctl --vacuum-size=100M
oder: alle Logs löschen, die älter als 2 Tage sind:
journalctl --vacuum-time=2days
Persistentes Journal
mkdir /var/log/journal systemctl restart systemd-journald
Boots
Auflisten, letztes boot
journalctl --list-boots journalctl -b
Ein bestimmtes boot (mit ID oder ordinal)
journalctl -b 76fcd53ed6d54d24b1422e6bb48bab61 journalctl -b -2
Versiegeln
So können die sealing keys erstellt werden
journalctl --setup-keys
Doku
Remote Logging
Benötigte Pakete: systemd-journal-remote
Push Betrieb
Receiver
Zunächst plain HTTP. Im systemd-journal-remote.socket steht der ListenStream=19532
als Standard-Port.
systemctl edit systemd-journal-remote.service
HTTPS durch HTTP ersetzen. Eigentlich keine gute Idee
[Service] ExecStart= ExecStart=...--listen-http...
systemctl enable --now systemd-journal-remote.socket ss -lnp '( sport = 19532 )'
Sender
- /etc/systemd/journal-upload.conf
[Upload] URL=http://10.0.0.1:19532
systemctl enable --now systemd-journal-upload.service
