Eigene Nagios-Plugins am Beispiel CURL

closeDieser Beitrag wurde vor über 3 Monaten veröffentlicht. Die darin beschriebenen Informationen sind mit Vorsicht zu geniessen, da sie bereits veraltet oder nicht mehr gültig sein könnten. Solltest du von Neuerungen oder Verbesserungen wissen, so freue ich mich über einen klärenden Kommentar.

Plugins zu Entwickeln für das Monitoring-System Nagios ist mit ein kleinwenig Scripting-Erfahrung kein grosses Problem mehr, wenn man weiss, wo man was ablegen soll. An folgendem Beispiel möchte ich die 3 einfachen Schritte festhalten. So stand ich letzthin vor der Aufgabe die Zeit zu messen, wie lange es braucht, um eine Seite innerhalb eines per Eingabeformular geschützten Bereiches, zu erreichen. Eigentlich gut möglich via CURL – habe ich mir gedacht! Es gibt ja Optionen wie –form oder –data, doch die scheinen auf das ASP.NET und Telerik-spezifische Formular nicht anzuspringen. Also muss der Weg über ein Cookie her mit der Option –cookie.

Doch wie sieht das Plugin nun aus?`

Von Aussen soll dem Plugin ein Cookie, eine URL und die Zeitgrenzen für eine Warnung und einen Error zum abfragen übergeben werden. Wer Scripten kann weiss natürlich das dazu die Variablen $1 – $4 genutzt werden. So kommen wir mal zu einer kleinen Überprüfung und der Übergabe an CURL:

if [ $# -lt 4 ]; then
        echo "Please use check_site COOKIE URL WARNING ERROR"
        exit 2
fi

warning=$(($3*1000))
error=$(($4*1000))

curl --cookie "ATUH=$1" "$2" -s > /tmp/store.tmp

Doch jetzt soll ja auch noch die Zeit gemessen werden. Also speichern wir vor und nach dem Abrufen der Seite jeweils einen Timestamp:

first=`echo $(($(date +%s%N)/1000000))`
warning=$(($3*1000))
error=$(($4*1000))

curl --cookie ".AUTH=$1" "$2" -s > /tmp/store.tmp

last=`echo $(($(date +%s%N)/1000000))`
need=$(($last-$first))

Und damit hat man schon fast die ganze Arbeit gemacht. Nun noch ein bisschen querchecken und die passenden Ergebnisse ausgeben:

if [ $need -gt $error  ]; then
        echo "needed `bc -l <<< "scale=3; $need/1000"` seconds for a response"
        exit 2
fi

if [ $need -gt $warning  ]; then
        echo "needed `bc -l <<< "scale=3; $need/1000"` seconds for a response"
        exit 1
fi

echo "needed `bc -l <<< "scale=3; $need/1000"` seconds for a response"
exit 0

Wer auch weiss, was im Report drin sein sollte und das auf ein bestimmtes Keyword prüfen möchte, um sicher zu gehen, der kann noch folgendes Schnipsel einfügen, natürlich vor allen anderen Überprüfungen:

if [ `cat /tmp/$id |grep KEYWORD |wc -l` -lt 1  ]; then
        echo "Unknown Error"
        exit 2
fi

Nun wenn man das Plugin im Ordner libexec abgelegt und ausführbar gemacht hat, kann man einen Eintrag in der Datei commands.cfg anlegen:

#check response time for a response report
define command {
        command_name check_site
        command_line $USER1$/check_site $ARG1$
}

Und als letzer Schritt, ganz wie man es bereits kennt, die Einträge in der hosts.cfg anlegen.

close
Immer informiert sein dank meines RSS Feeds.Oder folge mir via Twitter!

3 Gedanken zu „Eigene Nagios-Plugins am Beispiel CURL

Hinterlasse eine Antwort

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

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <b> <blockquote cite=""> <cite> <del datetime=""> <em> <i> <pre lang="" line="" escaped=""> <strong>