Monitoring mit curl und automatischem mtr bei Fehlern

Auf einem Server von mir habe ich das Problem, dass hin und wieder einige Packets Loss oder sehr lange Antwortzeiten zustande kommen und der Server einfach nicht nach außen durchkommt. Das ist bei einem Monitoring System natürlich sehr “bescheiden”.

Da mein Monitoring System extern bei Linevast steht und diese Probleme nur von diesem Server zu beobachten sind, ist die Vermutung natürlich ganz klar. Ein Netzwerkproblem bei dem externen Server.

Nun, egal wo, wird die erste Aussage sein: “Machen Sie einen mtr sobald das Problem auftritt”. 

Irgendwie auch verständlich, wenn auch sehr ärgerlich. Ist ja schließlich nicht die Aufgabe des Kunden zu sagen wo der Fehler auftritt.

Ich habe also verschiedene zusätzliche Monitoring Parameter eingerichtet um auch einen mtr zu bekommen um damit zu erkennen wo der Fehler liegt und dem Support diesen liefern zu können. Um auszuschließen das nicht meine Software spinnt, hat mir ein sehr freundlicher Support Mitarbeiter ein Bash Script zur Verfügung gestellt.

Mit dem Bash Script wird alle paar Sekunden mittels Curl eine Webserver Abfrage gestartet und sobald ein Fehler Auftritt, in Form von nicht Erreichbarkeit, startet das Script automatisch einen mtr und schreibt alle Ausgaben in ein Logfile.

Dieses kleine, nützliche Bash Script möchte ich euch nicht vorenthalten! Ich bin mir sicher der ein oder andere wird irgendwann ein Ähnliches Problem haben und dann könnte es ganz nützlich sein.

 

Eines vorab, Ihr müsst curl und mtr installiert haben. Ist dies nicht der Fall dann holt es einfach nach. Bei Debian geht es einfach mittels apt-get.

apt-get install mtr curl

Nun zu dem Script, welches Ihr an euren Host anpassen müsst:

#!/bin/bash

if [ -z "$1" ]; then
HOST="www.sugar-camp.com"
else
HOST=$1
fi

while true; do
curl -f -s --silent --output /dev/null $HOST

if [ $? -ne 0 ]; then
echo "$(date): Error $req" >> /root/logs/$HOST.statuserror
mtr --report --report-cycles 3 $HOST >> /root/logs/$HOST.mtr
fi

sleep 2
done

Speichert dieses Script einfach unter einem Namen eurer Wahl im /root Ordner und erstellt dort auch einen Ordner Namens logs.

In meinem Beispiel heißt dieses Script einfach sugar-camp.sh

cd /root
mkdir logs

 

Das Script muss natürlich Rechte zum Ausführen haben.

chmod 775 sugar-camp.sh

Das Script kann man nun einfach mittels Screen die ganze Zeit im Hintergrund laufen lassen. So verpasst man keinen Ausfall und hat dann immer einen mtr für den Support!

Sollte Screen nicht installiert sein, dann einfach mit apt-get 

apt-get install screen

 

Nun ist es ein leichtes das Script permanent im Hintergrund laufen zu lassen. 

screen -S sugar-camp -d -m /root/sugar-camp.sh

 

Wenn alles funktioniert hat, sollte die Ausgabe von

ps aux|grep sugar-camp 

die entsprechenden PID’s bringen.

Den Hostnamen müsst Ihr natürlich an eure Gegebenheiten anpassen, genau so wie den Scriptnamen und den Screen Befehl.

 

Ich hoffe das Script hilft dem ein oder anderen. An dieser Stelle auch ein großes Danke an den Support Mitarbeiter von Linevast, der so freundlich war das Script schnell zu erstellen und auch erlaubte es zu veröffentlichen.

Und wiedermal beweist sich dass es noch einen wirklich super Support in der Service-Wüste Deutschland gibt!

Linevast

Share it!Share on FacebookEmail this to someoneShare on Google+Tweet about this on Twitter

Schreibe einen Kommentar