Systemd Journal Remote Größenbeschränkung

Systemd Journal Remote Größenbeschränkung

Mit systemd-journal-remote lässt sich ein zentraler Logserver realisieren, auf den viele andere Systeme ihre Logmeldungen senden können. Im Paket systemd-journal-remote sind unter Debian sowohl der Transmitter als auch der Receiver enthalten.

Receiver

Die Konfigurationsdateien des Receivers befinden sich unter /etc/systemd/journal-remote.conf.d/. Dort wird eine neue Datei (z.B. receiver.conf) mit folgendem exemplarischen Inhalt angelegt:

[Remote]
MaxUse=12G
KeepFree=8G
MaxFiles=99999

Dadurch wird festgelegt, dass die Gesamtgröße aller Logs 12 GB nicht überschreiten darf. Im Filesystem des Log-Verzeichnisses (standardmäßig /var/log/journal/remote) muss mindestens 8 GB Platz sein. Bei Unterschreiten dieses Wertes werden die ältesten Logdateien gelöscht.

Die dritte Einstellung ist (bisher) leider nicht dokumentiert bzw. nicht deren Standardwert. Ich habe mich gewundert, dass systemd-journal-remote regelmäßig alte Logs löscht, obwohl obige zwei Einstellungen noch gar nicht zugetroffen haben. MaxFiles hat (wie im journald von systemd auch) einen Standardwert von 100. Durch obige Einstellung werden entsprechend mehr Logdateien aufbewahrt.

Anschließend kann der Receiver aktiviert und gestartet werden:

systemctl enable --now systemd-journal-remote.service

systemd vor Version 253 (bis zu Debian Bookworm) hatte einen Bug und die Einstellungen für systemd-journal-remote zur Größenbeschränkung wurden ignoriert. Ich habe mir mit einem eigenen Aufräumjob geholfen:

/etc/systemd/system/journald-clean-remote.timer

[Unit]
Description=Remote-Journal des journald bereinigen

[Timer]
OnBootSec=10min
OnUnitActiveSec=60min

[Install]
WantedBy=timers.target

/etc/systemd/system/journald-clean-remote.service

[Unit]
Description=Remote-Journal des journald bereinigen
Documentation=man:systemd.service

[Service]
Type=oneshot
ExecStart=/usr/bin/journalctl --vacuum-size 12G -m

Transmitter

Die Konfigurationsdateien für den Transmitter befinden sich unter /etc/systemd/journal-upload.conf.d/. Dort wird eine neue Datei (z.B. remote.conf) mit folgendem Inhalt angelegt:

[Upload]
URL=http://192.168.54.1:19532

Damit wird festgelegt, an welchen Server die Logmeldungen gesendet werden sollen. Ich habe der Einfachheit halber nur http verwendet, da bei mir die Transmitter und der Receiver per Wireguard verbunden sind. Alternativ unterstützt systemd-journal-remote auch die Authentifizierung mit Zertifikaten und die Übertragung der Logdaten per https.

Nachdem auch der Receiver konfiguriert und gestartet wurde, können anschließend auch die Transmitter aktiviert und gestartet werden.

systemctl enable --now systemd-journal-upload.service

Abschluss

Wenn alles ohne Fehler läuft, können anschließend die auf dem Logserver eintrudelnden Meldungen angezeigt werden:

journalctl -f -m

“-f” bewirkd, dass fortdauernd angezeigt wird (ähnlich wie tail -f), “-m” zeigt die Logs aller Remote-Systeme zusammengeführt an.


Siehe auch

Um Kommentare lesen oder verfassen zu können benötigen wir deine Zustimmung zum Speichern eines Cookies.