Wie man sich mit monit bei einem Serverabsturz per SMS warnen lässt

Version 1.0
Autor: Falko Timme


Diese Anleitung erklärt, wie man monit so einrichtet, dass im Falle eines nicht funktionierenden Serverdienstes Warnungen per SMS an eine Handynummer gesendet werden. Da monit nur Emails und keine SMS versenden kann, werden wir einen Email-to-sms Gateway benutzen, an welchen auch monit seine Emails versendet. Das Email-to-sms Gateway konvertiert die Emails zu SMS Nachrichten.

Diese Anleitung ist eine von vielen Möglichkeiten dieses System einzurichten. Eine Garantie dafür, dass es bei Dir genauso funktioniert, gibt es nicht.

1 Vorbemerkung

Ich gehe davon aus, dass Du monit schon mal eingerichtet hast, wie beispielsweise hier gezeigt wurde:
http://www.howtoforge.com/server_monitoring_with_munin_monit_debian_etch oder hier: http://www.howtoforge.com/server_monitoring_with_munin_monit_fedora_7.

In dieser Anleitung wird ein Webserver überwacht (mit der Webseite www.mywebsite.com) um zu überprüfen, ob er läuft. Hierfür benutzt man monit auf einem zweiten Server (monit.example.com), so dass monit Warnungen rausschicken kann, sobald der Webserver down ist. Es ist sinnvoll hierfür einen zweiten Server einzusetzen. Ist der Server down, kann monit natürlich keine Warnungen versenden, wenn es ebenfalls auf dem betroffenen Server eingesetzt wurde.

Der SMS Dienst, der hier verwendet wurde, ist SMS77.de. Um diesen Dienst zu nutzen, muss man sich zuerst registrieren und 5 Euro auf ein Prepaid Konto einzahlen. Wie auf http://www.sms77.de/email2sms.html gezeigt wird, müssen die Emails, die zur Gateway versendet werden, folgendes Format haben:

Subject: Text of the SMS
Text of the Mail: Email2SMS-Key#Recipient#SMS Type#Sender
Man kann den Key für email2sms in den SMS77.de Kontoeinstellungen angeben, die Angabe für den Empfänger ist die Telefonnummer des Handys, das benachrichtigt werden soll. Soll die Nachricht an mehrere Empfänger versendet werden, erfolgt die Eingabe der Telefonnummern getrennt durch ein Komma. Als SMS Typ nutzen wir basicplus, das nur 3,5 cents pro SMS kostet. Der Absender ist optional und kann weggelassen werden.

Ich werde monit nun anweisen die Warnungen so zu formatieren, dass sie dem benötigten Format entsprechen.

Natürlich kann man jeden anderen Email-to-sms Gateway nehmen. Das ist nur ein Beispiel meinerseits, und ich stehe in keinerlei Verbindung zu SMS77.de.

2 monit konfigurieren

Öffne/etc/monit/monitrc auf monit.example.com und füge folgenden Absatz am Ende der Datei hinzu:

vi /etc/monit/monitrc

[...]
check host www.mywebsite.com with address www.mywebsite.com if failed port 80 protocol http and request "/index.php" for 4 cycles then alert if failed icmp type echo count 5 with timeout 15 seconds for 4 cycles then alert alert email2sms@sms77.de { connection, timeout, icmp } with mail-format { from: monit@monit.example.com subject: $SERVICE $EVENT at $DATE on $HOST message: 123456#0170123456789#basicplus }
Wie man sieht, wird monit mit dieser Konfiguration die Datei index.php von www.mywebsite.com anfordern, und zusätzlich wird es versuchen den Host www.mywebsite.com anzupingen. Um sicherzugehen, dass monit nicht zu viele falsche Ergebnisse versendet, wird eine Warnung erst verschickt, wenn die Tests vier mal hintereinander fehlschlagen (for 4 cycles) - das zeigt an, dass ein wirkliches Problem vorliegt.

Die Warnungen werden dann zu der Email Adresse des Email-to-sms Gateway versendet, aber nur wenn es sich dabei um Verbindungsfehler, Timeouts, nicht angekommene Pings handelt (eine Liste der verfügbaren Ereignisse gibt es hier: http://www.tildeslash.com/monit/doc/manual.php#alert_message_layout), und der Absatz des Email-Formats das Format der Warn-Email beschreibt. Die Variablen, die in der Email benutzt werden können, sind hier gelistet: http://www.tildeslash.com/monit/doc/manual.php#alert_message_layout.

Bitte passe das an Deinem Email-to-sms Gateway an!

Danach monit neu starten:

/etc/init.d/monit restart

Das war's !

3 Links

1 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: atilla84

hallo
wie muss ich denn vorgehen um den ping zu überprüfen?? betreibe keinen webserver deswegen die frage....
ich danke mich schonmal rechtherzlich für eure antowt