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=99999Dadurch 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.servicesystemd 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 -mTransmitter
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:19532Damit 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.serviceAbschluss
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.