Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
admin_grundlagen:journald [2016/06/22 18:11] stefan_miethke [systemd: journal] |
admin_grundlagen:journald [2025/01/30 14:49] (aktuell) natureshadow2 [Receiver] Remote-Journal nach Sender-Hostname filtern |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | |||
====== systemd: journal ====== | ====== systemd: journal ====== | ||
Die "Logfiles" im systemd sind eine binäre Datenbank mit umfassenden Suchwerkzeugen | Die "Logfiles" im systemd sind eine binäre Datenbank mit umfassenden Suchwerkzeugen | ||
Zeile 14: | Zeile 13: | ||
* umfangreiche Abfragemöglichkeiten | * 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 | ||
+ | | ||
+ | ((man könnte auch eine id selbst erzeugen mit ''dbus-uuidgen > /etc/machineid'')). | ||
+ | (( Debian Wiki zu dem Thema: | ||
+ | https://wiki.debian.org/MachineId#line-35 | ||
+ | )) | ||
+ | |||
+ | Das Verzeichnis ''/var/log/journal'' muss vorhanden sein; systemd loggt andernfalls nur temporär. | ||
+ | |||
+ | ===== journalctl ===== | ||
gleich ans Ende springen | gleich ans Ende springen | ||
journalctl -e | journalctl -e | ||
Zeile 29: | Zeile 45: | ||
in einem bestimmten Zeitraum | in einem bestimmten Zeitraum | ||
- | journalctl --since "2016-01-10" --until "2016-01-11 03:00" | + | journalctl --since '2016-01-10' --until '2016-01-11 03:00' |
| | ||
ab einem bestimmten Level | ab einem bestimmten Level | ||
Zeile 43: | Zeile 59: | ||
=== Ins Journal schreiben === | === Ins Journal schreiben === | ||
+ | genauer: stdout und stderr mit dem journal verbinden | ||
ls | systemd-cat | ls | systemd-cat | ||
+ | systemd-cat hostnamectl | ||
==== Größe beschränken ==== | ==== Größe beschränken ==== | ||
- | ''/etc/systemd/journald.conf'' : | + | Defaults für ''persistent'': 10% filesystem. Max 4 GiB |
- | <file> | + | |
+ | <file txt /etc/systemd/journald.conf.d/lukas.conf> | ||
SystemMaxUse=100M | SystemMaxUse=100M | ||
SystemKeepFree=1G | SystemKeepFree=1G | ||
</file> | </file> | ||
+ | |||
+ | ==== 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 | ||
+ | journalctl --flush | ||
+ | ==== 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 ===== | ===== Doku ===== | ||
* http://0pointer.de/blog/projects/journalctl.html | * http://0pointer.de/blog/projects/journalctl.html | ||
+ | ====== 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 ;-) | ||
+ | |||
+ | <file> | ||
+ | [Service] | ||
+ | ExecStart= | ||
+ | ExecStart=...--listen-http... | ||
+ | </file> | ||
+ | |||
+ | systemctl enable --now systemd-journal-remote.socket | ||
+ | ss -lnp '( sport = 19532 )' | ||
+ | |||
+ | Remote-Logs mit journalctl anzeigen: | ||
+ | |||
+ | journalctl -D /var/log/journal/remote | ||
+ | journalctl -D /var/log/journal/remote _HOSTNAME=notebook42 | ||
+ | ==== Sender ==== | ||
+ | <file txt /etc/systemd/journal-upload.conf> | ||
+ | [Upload] | ||
+ | URL=http://10.0.0.1:19532 | ||
+ | </file> | ||
+ | |||
+ | systemctl enable --now systemd-journal-upload.service |