Netzwerk & IPOffice & Business

Check_MK-Serie: Eigene Check-Plugins einbauen

Über eigene Skripte könnt Ihr Check_MK mit so ziemlich jeder Information versorgen. Und die Netzwerküberwachung macht es Euch an dieser Stelle wirklich extrem einfach: Skripte müssen lediglich in einem Ordner abgelegt werden und Output in einem bestimmten Format liefern.

Alle Links zur Check_MK-Serie findet Ihr im Übersichtsartikel, der stets aktuell ist.

1. Das Ergebnis zuerst

Hier mal das berühmte von hinten aufgezäumte Pferd: Für den Bau des Skripts, solltet Ihr erst einmal sehen, wie das Ergebnis in Check_MK aussieht. Euer Skript taucht wie jeder andere Service auch beim zugehörigen Host auf und wird wie in Teil 1 der Serie beschrieben zum Monitoring hinzugefügt. Wichtig ist der Output: Zunächst das OK-Zeichen, dann der Service-Name, dann die Beschreibung - und ganz rechts könnten optional noch Performance-Daten als Graph dargestellt werden. Und das Skript, hier "myservice"; muss eben diese vier Elemente ausgeben, in der Art 1 myservice - Eine Beschreibung. Statt Performance-Daten steht hier der -, brauchen wir nicht.

Das Windows-Batch-Skript soll prüfen, ob der Prozess chrome.exe läuft. Wie das mit eingebauten Check_MK-Mitteln funktioniert, könnt Ihr in Teil 7 nachlesen.

check_mk eigene skripte
Wenn der Output richtig formatiert ist, taucht er als Service auf.

2. Skript schreiben

Zunächst das Wichtigste: Das Skript speichert Ihr unter Windows, bei Standard-Installation des Check_MK-Agents, einfach unter C:\Program Files (x86)\check_mk\local - entsprechend heißen diese Checks auch Local Checks. Als Beispiel ein möglichst simpler Code:

@echo off
tasklist|grep chrome|wc -l|cut -c6- > d:\1
for /f %%i in ('cat d:\1') do set a=%%i
if %a% GTR 0 (echo 1 myservice - Vorsicht: Chrome ist aktiv) else (echo 0 myservice - Alles gut: Chrome ist nicht aktiv)

Erstmal `tschuldigung für das grausige Skript ..., natürlich sollte man Textdateien nicht als Puffer missbrauchen, aber das war schneller getippt und Scripting unter Windows ist doof - ist ja nur ein Beispiel :) Und wer sich über die Befehle wundert: grep, wc, cut und Konsorten stammen aus dem Projekt UnxUtils, das die meisten Gnu-Tools als native Win32-Programme liefert. Sehr empfehlenswert! Was macht das Skript: Über tasklist werden die laufenden Windows-Tasks ausgelesen, nach "chrome" durchsucht, die Treffer gezählt und wenn es Treffer gibt, wird "1 myservice ..." ausgegeben, oder eben "0 myservice ...". Dabei stehen die Ziffern für die Status, also 0 für OK und 1 für WARN.

check_mk eigene skripte
Ein simples Batch-Skript im richtigen Ordner genügt.

Ein Linux-Beispiel: Das Skript landet hier unter /usr/lib/check_mk_agent/local/. Ihr könntet etwa melden lassen, wenn auf Spiegel Online das Wort "Berlin" vorkommt:

a=$(curl www.spiegel.de | grep -ci berlin) 
if [ $(echo $a) -gt 1 ] 
 then echo "0 BerlinCheck - Berlin wird bei SPON erwähnt, alles gut ..." 
 fi

Auf gleiche Weise ließen sich natürlich beliebige Quellen anzapfen, Security-Boards, CERTs, Twitter-Channel, das eigene Intranet und so weiter.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

2 Kommentare

  1. Hi, ich habe eine Frage zum Artikel. Ich habe ein Skript geschrieben und es unter local/bin/ abgelegt. Dann habe ich es als Datenquellenprogrammen unter („Datasource Programs ➳ Individual program call instead of agent access“) hinzugefügt. Aber leider taucht es nicht unter den Services auf. Hast du eine Idee oder selbst das Problem gehabt?

    Danke

Schreibe einen Kommentar

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

Schaltfläche "Zurück zum Anfang"