Open Source im professionellen Einsatz

© photocase.com / grundhaerte

Leistungsstarke Logfile-Auswertung mit Nagios

Alles im Blick

Monitoring-Software steht nicht selten vor dem Problem, dass die Applikation, die sie im Auge behalten soll, sich nicht auf Befragen zu ihrem Befinden äußern mag. Die rettende Alternative ist ein Blick in ihr Logfile. Dem Nagios-Plugin »check_logfiles« entgeht dabei keine Zeile.

Wer sich schon näher mit Nagios beschäftigt hat, der mag stutzen: Das gibt es doch alles längst! Die offizielle Nagios-Plugin-Sammlung enthält schließlich bereits »check_log« und zusätzlich »check_log2«. Erfindet hier ein neuer Nagios-Helfer das Rad zum dritten Mal? Nein, denn die bisher existierenden Log-Beobachter hatten ein kleines Problem: Rotierte die Applikation oder ein Skript wie üblich das Log, konnte es vorkommen, dass sie den Anschluss verpassten und ein paar Zeilen übersahen.

Ist aber wie so oft eine lückenlose Überwachung unerlässlich, dann ist dieser Lapsus sicherlich nicht tolerierbar. Deshalb hat sich »check_logfiles« das Ziel gesetzt, ausnahmslos jeden Eintrag zu prüfen, auch wenn das Log während der Beobachtung Ablageort und Namen wechselt oder in einem komprimierten Archiv verschwindet. Das neue Plugin [1] dagegen findet auch dann stets exakt die richtige Anschlussstelle.

Das ist aber noch nicht alles. Das Plugin zeichnet sich außerdem durch eine Reihe weiterer ausgeklügelter Features vor seinen Vorgängern aus. So kann es

  • zwischen Suchmustern unterscheiden, die lediglich ein Warning
    auslösen sollen, und solchen, die den Status
    »Critical« setzen,
  • mit mehreren solcher Muster gleichzeitig arbeiten,
  • mit speziellen Mustern umgehen, die alle zuvor gefundenen
    Warnungen oder Alarme wieder aufheben,
  • Ausnahmen akzeptieren, die eine besondere Teilmenge eines
    Suchmusters als harmlos erkennen,
  • Schwellenwerte berücksichtigen, die dafür sorgen,
    dass Nagios nicht sofort, sondern erst ab einer vorher festgelegten
    Anzahl von Treffern einen Alarm auslöst,
  • auf bestimmte Treffer mit Aktionen, beispielsweise einem
    Neustart der Applikation, reagieren,
  • externe Programme integrieren (etwa »errpt« unter
    AIX), deren Ausgaben es wie ein Logfile behandelt,
  • die Anzahl durchsuchter Zeilen und Treffer als Performancedaten
    ausgeben und schließlich
  • gleichermaßen unter Linux, Unix und Windows laufen.

Installation

»Check_logfiles« kommt von [1] als gepackte Tar-Datei daher. Nach dem Entpacken wechselt der Installateur in das Verzeichnis »check_logfiles-2.3.1.1« und erzeugt dort mit dem bekannten Dreisatz »configure;make;make install« das Plugin. Den Schritt »configure« kann er zusätzlich mit unterschiedlichen Optionen steuern (siehe Kasten "Optionen für »configure«").

Optionen für
»configure«

  • »--with-perl« ist zu setzen, falls eine eigene
    Perl-Installation gewünscht ist.
  • »--prefix« gibt das Basisverzeichnis der
    Nagios-Installation an. Das Plugin installiert sich dort im
    Unterverzeichnis »/libexec«.
  • »--with-seekfiles-dir« gibt an, in welchem
    Verzeichnis Statusinformationen zwischen den Läufen zu
    speichern sind.

Erstes Beispiel

Das erste Beispiel sucht einfach nach dem String »BIGERROR« in einer Datei »suelzomat.log«. Das bewerkstelligt der Aufruf des Plugins mit:

check_logfiles -criticalpattern='BIGERROR'-logfile=suelzomat.log

Wenn in einer Zeile, die seit dem letzten Aufruf hinzukam, der String »BIGERROR« auftaucht, liefert das Plugin den Status »Critical«, sonst »OK«. Der String ist genauer gesagt ein regulärer Ausdruck. Statt »-criticalpattern« ließe sich auch »-warningpattern« verwenden, wie in »--warningpattern=\'SMALLERROR\'«. Als Exitcode ergäbe sich nach erfolgreicher Suche »1« für »Warning«. Selbstverständlich lassen sich beide Optionen auch gleichzeitig verwenden.

Dies erste Beispiel berücksichtigt noch keine Rotation des Logfile. Das Plugin würde diesen Fall zwar erkennen, durchsucht die wegrotierte Datei aber nicht. Wer auch die zwischen zwei Läufen von »check_logfiles« wegrotierten Dateien in die Suche einbeziehen will, sodass keine Lücken entstehen, der muss daher dem Plugin eine Hilfestellung geben, um die wegkopierten Files zu finden. Dazu dient der Parameter »-rotation«, der entweder den neuen Filenamen angibt oder einen regulären Ausdruck enthält, der auf die Namen der rotierten Files passt (Abbildung 1).

Abbildung 1: Die übliche Rotation von Logfiles macht einigen Plugins Schwierigkeiten. Unter Umständen gehen durch das Wegkopieren oder Umbenennen sogar Einträge verloren.

Abbildung 1: Die übliche Rotation von Logfiles macht einigen Plugins Schwierigkeiten. Unter Umständen gehen durch das Wegkopieren oder Umbenennen sogar Einträge verloren.

Angenommen die Datei »suelzomat.log« würde täglich in »suelzomat.log.0« umbenannt und dann wieder eine leere »suelzomat.log« erzeugt. Danach bekäme die vorherige »suelzomat.log.0« den Namen »suelzomat.log.1« und so weiter. In diesem Fall sorgt der Parameter »-logfile=/var/log/suelzomat.log -rotation= \'suelzomat.log.d+\'« dafür, dass das Plugin die jeweilige Vorgängerversion findet und berücksichtigt. Alternativ ließe sich auch direkt der Dateiname »suelzomat.log.0« angeben.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook