Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:journald

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
admin_grundlagen:journald [2016/03/14 15:42]
stefan_miethke [Meldungen eines bestimmten Dienstes]
admin_grundlagen:journald [2023/11/10 12:32]
ingo_wichmann [Persistentes Journal]
Zeile 1: Zeile 1:
 +====== 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
 +  ​
 +((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 ===== ===== journalctl =====
 gleich ans Ende springen gleich ans Ende springen
Zeile 8: Zeile 38:
 alle Felder aufschlüsseln alle Felder aufschlüsseln
   journalctl -o verbose   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 seit dem letztem Boot
   journalctl -b   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 ==== ==== Meldungen eines bestimmten Dienstes ====
   journalctl _SYSTEMD_UNIT=ssh.service   journalctl _SYSTEMD_UNIT=ssh.service
Zeile 21: 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 )'
 +
 +==== Sender ====
 +<file txt /​etc/​systemd/​journal-upload.conf>​
 +[Upload]
 +URL=http://​10.0.0.1:​19532
 +</​file>​
 +
 +  systemctl enable --now systemd-journal-upload.service
admin_grundlagen/journald.txt · Zuletzt geändert: 2023/11/24 08:25 von natureshadow2