QVINTVS · SCRIBET

Mail-Statistiken mit Journald und Rsyslog

Kurztipp: Wie man Munin dazu bekommt, mit journald durch Einsatz von rsyslog Logfile-Analyse zu betreiben.

freedesktop.org-Logo

Systemd enthält bekanntlich eine ganze Reihe praktischer Werkzeuge (und eine ganze Reihe solcher, die man nicht zwingend einsetzen muss), darunter insbesondere den hervorragenden journald, der Filtern und Durchsuchen von Logfiles sehr angenehm macht. Wenig überraschend handelt es sich bei journald jedoch auch nicht um eine Allheil-Lösung, z.B. wenn es darum geht, aus den Logfiles mithilfe von Munin hübsche Graphen zu erzeugen.

Das Problem dabei liegt darin, dass der Aufruf des journalctl-Kommandos verhältnismäßig performanzbeeinträchtigend ist. Hauptzweck dieses Kommandos ist das manuelle Durchsuchen von Logfiles, und nicht die automatisierte Bearbeitung von Logs zu Statistikzwecken. Das Problem lässt sich jedoch dadurch lösen, indem man zusätzlich zu journald einen weiteren Logging-Dæmon wie rsyslog betreibt, der die zu analysierenden Logfiles für Programme wie Munin vorbereitet. Dabei agiert journald für Rsyslog vollkommen transparent, d.h. Rsyslog bekommt von der Existenz des Journaling-Dæmons überhaupt nichts mit.

Damit dies funktioniert, muss in die Datei /etc/systemd/journald.conf folgende Zeile eingetragen werden:

ForwardToSyslog=yes

Nach einem Neustart von systemd-journald und ggf. von Rsyslog erscheint das Journal für Rsyslog transparent und kann mit den gewohnten Mitteln der /etc/rsyslog.conf gefiltert werden. Da journald bereits alles loggt, kann Rsyslog auf die reine Filterfunktionalität für Munin heruntergebrochen werden. Eine /etc/rsyslog.conf könnte dafür etwa so aussehen:

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf

mail.*     -/var/log/mail.log
mail.info  -/var/log/mail.info
mail.warn  -/var/log/mail.warn
mail.err    /var/log/mail.err

Dies beschränkt Rsyslog auf das Logging von Nachrichten auf der mail-Facility, welche dann in spezifische Logfiles unter /var/log geschrieben werden, ganz wie in Zeiten vor journald. Diese Logfiles können dann von Programmen wie Munin analyisiert und zu Statistiken verarbeitet werden, ohne, dass eine merkliche Performanzbeeinträchtigung zu besorgen ist.

Valete.

Illustration: © 2014 Freedesktop.org