Logdateien monitoren – mit multitail

Lange Zeit suchte ich nach einer Lösung, um das Überwachen der Logdateien meiner Server etwas ansprechender zu gestalten. Ich wollte erreichen, dass bestimmte Keywords, die in den Logfiles vorkommen, farblich hervorgehoben werden.

Einfache Variante mit tail -f und grep

Zunächst verwendete ich schlicht und einfach tail -f und grep. Das tail zeigt die letzen paar Zeilen einer Datei, die Option -f weist an, die Datei fortlaufend zu monitoren und Änderungen in Echtzeit anzuzeigen. Damit mir auch die nicht-matchenden Zeilen angezeigt werden, verwende ich einfache regular expressions.

tail -f /var/log/mail.log | egrep "CLEAN|removed|$"

| steht hier für „oder“, das $ steht für Zeilenende, also jede Zeile. Dadurch zeigt grep auch die nicht-matchenden Zeilen (unfarbig) an.

Falls die Farben nicht sichtbar sein sollten, fehlt vermutlich der entsprechende Alias in der .bashrc:

alias egrep='egrep --color=auto'

PS: wenn color=auto in color=always verändert wird, bleiben die Farben auch dann erhalten, wenn die Ausgabe von grep in eine Pipe geschickt wird, z.B. so:

tail -f /var/log/mail.log | egrep --color=always "CONNECT|$" | egrep --color=always "Disconnected|$"

Leider kommt man hier schnell an die Grenze, da grep meines Wissens nach nur eine Farbe unterstützt. Außerdem sind die Kommandos etwas mühselig.

Mehr Farben und Funktionen mit multitail

multitail sollte meiner Meinung nach auf keinem Linux-Server fehlen. In erster Linie soll es das bekannte tail um viele Funktionen ergänzen. Es basiert auf ncurses und kann mehrere Dateien gleichzeitig überwachen und Keywords farbig darstellen. Die Installation ist auf einem Debian / Ubuntu Server denkbar einfach:

apt-get update
apt-get install multitail

ein Aufruf sieht zum Beispiel so aus:

multitail /pfad/zur/datei1 /pfad/zur/datei2

Multitail Splitscreen

Man sieht, es können mehrere Dateien angegeben werden, die zur gleichen Zeit überwacht werden. Das schönste daran sind allerdings die verschiedenen Farben, welche zentral über die Datei /etc/multitail.conf konfiguriert werden. Dort können mittels Regular Expressions auch eigene Regeln definiert werden.

Speziell um die Logdatei meines Mailservers zu überwachen, habe ich den Bereich für postfix wie folgt editiert und um Einträge für dovecot und amavis ergänzt:

colorscheme:postfix:www.postfix.org
cs_re:cyan::
cs_re:yellow:status=sent
cs_re:magenta:queue.active
cs_re:green:from=.*>
cs_re:red:to=.*>
cs_re:blue|blue,,bold:^... .. ..:..:..
cs_re:green:\[
cs_re:green:\]
cs_re:red:NOQUEUE:.*
cs_re:green:<[a-zA-Z0-9_\@\.\-]+> -> <[a-zA-Z0-9_\@\.\-]+>
cs_re:red:INFECTED
cs_re:green:CLEAN
cs_re:yellow:BAD_HEADER
cs_re:cyan:dovecot:.*
cs_re:magenta:Hits: [-0-9\.]+
cs_re:blue,,bold:amavis.*

Damit dieses Farbschema auch verwendet wird, rufe ich multitail wie folgt auf:

multitail -cS postfix -n 1000  /var/log/mail.log

Mittels -cS wird das Farbschema angegeben, das -n 1000 bedeutet, dass die letzten 1000 Einträge in den Puffer geladen werden. Dies ist für das Zurückblättern nützlich. Zu guter letzt gebe ich den Pfad zur überwachenden Datei an. Das Ergebnis sieht super aus, wie ich finde. Alle relevanten Ereignisse stechen hervor:

Multitail Postfix

Damit ich nicht jedes Mal das lange Kommando eingeben muss, habe ich mir folgenden Alias in die .bashrc eingetragen:

alias mlg='multitail -cS postfix -n 1000 /var/log/mail.log'

Somit reicht ein einfaches mlg auf der Konsole aus.

Zurückblättern

Während Multitail läuft, kann mit der Taste B in der Datei zurückgeblättert werden. Mit der Taste E kann gefiltert werden, und mit / kann man nach Keywords suchen. Damit macht meiner Meinung nach das Logdateien monitoren Spaß.

One Comment on “Logdateien monitoren – mit multitail

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.