check_mk Nagios

Checks zuweisen die keine Inventur besitzen am Beispiel einer Prozessüberwachung

Update: Diese Anleitungen gilt für ältere Versionen von Check_MK. Die Konfiguration kann in den neuen Versionen bequem in Wato, dem Webadministrationstool durchgeführt werden.

Am Beispiel einer Prozessüberwachung erkläre ich in diesem Artikel, wie checks in der main.mk eingetragen werden können, welche nicht automatisch inventarisiert werden.

Einen Prozess mit check_mk zu überwachen, fordert mit check_mk keine weitere Konfiguration auf dem Zielrechner. Eine komplette Liste der laufenden Prozesse werden dem Nagios Server bereits durch den Agent geliefert.

Es muss also nur noch angegeben werden, welche Prozesse man überwachen will. Diese Konfiguration kann wie bereits in meinem Artikel Einstieg in den Benutzung von check_mk dann jeweils einem oder mehreren Hosts zugeordnet werden oder eben einem Hosttag. Um das Beispiel des anderen Artikels aufzugreifen, möchte ich nun auf srvweb1 den Dienst Apache überwachen. In der Konfiguration des Beispiels habe ich bereits einen Hosttag mit dem Namen apache eingetragen, um ggf. auch auf anderen Servern diesen Dienst durch einfaches zufügen des Hosttags überwachen zu können.

checks += [
  ( ["apache"], ALL_HOSTS, "ps", "Apache_Check", ( "~.*apache2", 5, 50, 80, 85 ) )
]

Das passiert hier: Ich erweitere die Liste checks um einen check,dazu muss ich ein sogenanntes Tuple eintragen. Pro Zeile kann ich für jeden Check jeweils ein Tuple eintragen. Innerhalb des Tuple erfolgt mit den ersten beiden Wertungen die Zuweisung an den Host. Im Beispiel sind dies Alle Hosts mit dem Tag apache. Will ich etwas direkt an einen Hostnamen zuordnen, schreibe ich den Hostnamen anstelle des Tags. , ALL_HOSTS fällt dabei weg. Mehrere Hosts oder Tags werden übrigens so zugeordnet: [“eintrag1”,”eintrag2].

Jetzt folgt die Angabe des checks, den ich benutzen will: Im Beispiel ps. Will ich übrigens die Prozesse auch Performance Graphen überwachen, hilft uns der check ps.perf.

Als vorletztes nun die Service Description für Nagios. Dies ist der Name, mit welchem der Service später in Nagios angezeigt wird.

Zuletzt ein Tuple mit den check-Parametern. Bis auf den Inhalt dieser inneren Tuple ist die Syntax zur Zuweisungen anderer checks immer gleich.

Bei den ps checks besteht dieser Tuple nun aus 5 oder 6 Werten. Der erste Wert ist hier nun der Name des Prozesses, wie er in der ps Liste des Systems auftaucht. Das Tolle hierbei ist, dass reguläre Ausdrücke möglich sind .

Im Beispiel wird jeder Prozess überwacht, welcher im Namen apache2 enthält. Möchte ich nicht auf den Prozessnamen gehen, sondern auf den Besitzer des Prozesses, muss ich anstelle “~.*apache2” ein None schreiben, dann ein Komma und den Benutzernamen in Anführungszeichen. Die folgenden 4 Ziffern sind die jetzt die Schwellwerte entsprechend der Zahl der laufenden Prozesse. Warnmin, OKmin, OKmax, Warnmax.

Im Beispiel bedeutet das nun: zwischen 5 und 50 erscheint Warning, zwischen 50 und 80 ist alles OK, zwischen 80 und 85 wieder Warning und alles kleiner 5 und größer 85 ist Critical.

Will ich das z.B. ein Prozess nur einmal läuft, wäre es 1,1,1,1.

Jetzt nur noch eine Inventur des Systems, und unser Prozess taucht in der Überwachung auf.

Mehrere ähnliche Prozesse automatisch generieren

Zum Abschluss noch ein kleines “Schmankerl”, wie uns check_mk auch hier wieder Arbeit abnehmen kann.

In manchen Fällen hat man mehrere Dienste, die man überwachen will, z.B. jeder Dienst mit dem Pfad /usr/bin/notes/. Jetzt muss ich nicht für jeden Prozess einen eigenen Eintrag schreiben, sondern kann dies automatisch machen lassen:

checks += [
  ( ["notes"], ALL_HOSTS, "ps", "Notes_%s", ( "~/usr/bin/notes/(.*), 1, 1, 1, 1 ) )
]

Wie im Beispiel zu sehen, erweitere ich die Service Description nur um ein %s. Wir erinnern uns, dass in der Konfiguration des Prozessnamens reguläre Ausdrücke erlaubt sind. Klammere ich nun hier was ein, wird %s automatisch durch den geklammerten Teil ersetzt. Hier klammere ich (.*) ein, das bedeutet eine beliebige Anzahl von Zeichen, eben alles was nach /usr/bin/notes/ kommt.

Also, viel Spass damit :)

5 thoughts on “Checks zuweisen die keine Inventur besitzen am Beispiel einer Prozessüberwachung

  1. Huhu,
    hier hab ich auch noch etwas kleines.
    Wenn ich das so
    checks += [
    ( [“apache”], ALL_HOSTS, “ps”, “Apache_Check”, ( “~.*apache2”, 5, 50, 80, 85 ) )
    ]
    eintrage, erscheint bei mir bei der Service immer noch ein “proc_” davor.
    Also da steht dann “proc_Apache_Check”.

    Kann man das irgendwie unterbinden?

  2. Nee WATO finde ich überhaupt nicht gut. Ich habe da 2-3 mal versucht Einstellungen zu machen, und habe ständig Fehler angezeigt bekommen. Nicht schön.
    Weiter ist es auch nicht wirklich intuitiv. Ich habe grade mal versucht das Beispiel mit dem PS und Apachen dort durch zu spielen. Naja nicht grade übersichtlich. Der Check ist erstellt und dem Host zugewiesen. Angezeigt wird er aber dennoch nicht.

    Aber vielen Dank und schönen Abend noch.

  3. Also hier sind wirklich unmengen an Leuten einer anderer Meinung :)
    Fehlermeldungen sollten in der aktuellen Version auch keine Kommen. Habe es schon bei vielen Kunden eingeführt bzw. betreut :). OMD installieren, Seite Erstellen, Start, in die GUI gehen, Wato, Rechner eintippen und alles rennt in paar Minuten :)

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.