|
Mit Hilfe von LogSurfer kann eine Log-Datei, wie die /var/log/messages in Echtzeit kontrolliert werden. Bei Auftreten bestimmter Ereignisse in der Log-Datei kann LogSurfer Benachrichtigungen senden, z.B. als E-Mails.
Als besonderes Feature kann LogSurfer mehrere zusammenhängende Ereignisse in einem Container sammeln, um dann mit nur einer Benachrichtigung zu reagieren. So kann eine Benachrichtigungs-Flut vermieden werden.
LogSurfer kann zu einem zentralen Werkzeug werden - werden von allen Geräten Meldungen an einen Syslog-Server geschickt, auf welchem LogSurfer lauft, können Meldungen aller Server, Router und sonstigen Syslog-fähigen Geräten damit analysiert werden. Auch für Windows gibt es verschiedene Clients, damit die Eventlogs in Echtzeit an einen Syslog-Server geschickt werden können, wie z.B. das freie ntsyslog.
Konfiguration
Hier geht es um ein Beispiel, in welchem wichtige Meldungen per Mail weitergeleitet werden sollen. Vorausgesetzt wird, dass der Server Mails versenden kann.
logsurfer.conf
In dieser Datei werden die Regeln festgelegt, was bei Auftreten eines oder mehrerer bestimmten Ereignisses geschehen soll. Die Datei kann zum Beispiel unter /etc/logsurfer/logsurfer.conf liegen, je nach Konfiguration.
Der Grundaufbau einer Regel sieht folgendermaßen aus:
Passender_Ausdruck Nicht_Passender_Ausdruck stop_regex not_stop_regex timeout [continue] Aktion
Meist ist nur Passender_Ausdruck und Aktion definiert.
|
Passender_Ausdruck
|
Ein Ausdruck an dieser Stelle ich zwingend erforderlich. Passt er nicht auf die Zeile der Log-Datei, tritt die Regel nicht in Kraft
|
|
Nicht_Passender_Ausdruck
|
Ist dieser Ausdruck nicht "-", wird Regel abgebrochen, wenn der Ausdruck passt. Ist meist "-"
|
|
stop_regex
|
Ist dieser Ausdruck nicht "-", löscht er dynamische Regeln. Ist fast immer "-"
|
|
not_stop_regex
|
Ist dieser Ausdruck nicht "-", darf stop_regex die Dynamische Regel nicht löschen. Ist fast immer "-"
|
|
timeout
|
Ist dieser Ausdruck nicht 0, definiert der Wert die Anzahl der Sekunden, welche die Regel aktiv ist.
|
|
continue
|
Wird dies genutzt, wird nach der Aktion die Zeile der Log-Datei durch die folgenden Regeln analysiert. Fehlt das continue, wird die Zeile auf keiner weiteren Regel angewendet.
|
|
Aktion
|
Was gemacht werden soll, wenn Regel zutrifft. Verwendet werden hier vor allem ignore, open und pipe (siehe man-Page zur logsurfer.conf)
|
Das Zutreffen einer Regeln wird über reguläre Ausdrücke definiert. Leider gibt es mehrere Varianten der regulären Ausdrücke. LogSurfer nutzt die der GNU regex-library, wie sie auch egrep nutzt. Eine Doku in Englisch ist den Sourcen beigelegt.
Zeilen, die mit einem # beginnen, werden als Kommentar gesehen und damit ignoriert. Beginnt die Zeile mit einem Leerzeichen oder einem TAB, gilt sie als Fortführung der vorhergehenden Zeile. Nur wenn eine Zeile nicht mit einem Leerzeichen, TAB oder einer #, wird sie als beginn einer neuen Regel gesehen.
Zu weiteren Details siehe die man-Page zur logsurfer.conf Datei.
Unwichtige Meldungen unterdrücken
Um unwichtige Meldungen zu unterdrücken
"wurde erfolgreich durchgef.hrt" - - - 0 ignore
Hier sieht man auch gleich die Lösung eines Problems, wenn im Log-Datei Sonderzeichen vorkommen: Das Sonderzeichen muss mit einem "." ersetzt werden. Der Punkt seht bei regulären Ausdrücken für irgendein beliebiges Zeichen.
Meldungen Sammeln und dann eine E-Mail schicken
Hier soll z.B. erst eine Mail geschickt werden, wenn die Meldungen entweder 120 Sekunden gesammelt wurden oder mehr als 50 Treffer auf den String "server1" vorliegen:
'server1' - - - 0 open "server1" - 50 120 - pipe "/usr/bin/mutt -s \"Server1-Meldungen \"
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
"
Meldungen Sammeln, als E-Mail schicken und dabei Variablen nutzen
Die folgende Regel wurde an das Ende aller Regeln gestellt. Der reguläre Ausdruck bewirkt, das die Klammer ([^ ]*) den Hostnamen enthält, der anschließend über die Variable $2 als Betreff geschickt werden kann:
'.{3} {1,2}[^ ]{1,2} [^ ]{8} ([^ ]*) ' - - - 0 open ".{3} {1,2}[^ ]{1,2} [^ ]{8} $2" - 20 60 - pipe "/usr/bin/mutt -s \"Event $2\"
Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können.
"
|