Systemüberwachung mit Nagios und Twitter

Home / Network / Systemüberwachung mit Nagios und Twitter

Wollte mich heute eigentlich mal um meine ToDo-Liste kümmern, aber irgendwie fehlte mir da die Lust zu ;) Stattdessen habe ich mich heute mal mit cURL, JSON, Twitter und Nagios beschäftigt.
Jeder Admin wird es kennen, das Problem mit der Benachrichtigung wenn mal etwas nicht funktioniert, eine Website nicht erreichbar ist oder der Datenbank-Server nicht läuft. Man strebt immer mehr die ständige Verfügbarkeit von Servern und Diensten an. Daher ist es wichtig das die entsprechenden Personen schnell benachrichtigt werden oder zumindest wissen das es Probleme gibt. Aus diesem Grund überwachen viele Admins ihre Systeme mit unterschiedlichen Tools. Bekanntes und gern eingestztes Systemmonitoring-Tool im OpenSoucre Bereich ist Nagios. Mit diesem Tool kann man eigentlich alles überwachen was man möchte. Von einfachen pings bis hinzu kompletten Verbindungschecks kann Nagios eigentlich alles. Dadurch das die meistenvorgefertigten Checks in Perl geschreiben sind, kann es ohne Probleme erweitert werden. Im Netz gibt es zahlreiche Erweiterungen für das Tool. Man kann Server mit Switchs etc. in Abhängikeit bringen und durch Kontaktgruppen auch nur die Leute informieren die das Problem angeht. Benachrichtigungen laufen normalerweise per Mail oder per SMS. Leider fehlt mir hier eindeutig der Twittersupport. ;)
Mittlerweile checken die Admins eher Twitter als ihre Mails oder SMSs. Wer schreibt schon noch ne sms? ;) Ich hab mein Nagios heute mal um Twitter ergänzt und bis jetzt funktioniert das gut. Jeder der benachrichtigt werden möchte brauch einfach nur dem Twitter-Account folgen und schon bekommt er immer den aktuellen Status in seine Timeline. Jetzt werden sicherlich gleich viele aufschreiben wegen Datenschutz etc. Man kann den Twitteraccount für die Statusmeldungen auch auf privat setzten, wenn man es möchte. Im Moment werden auch noch keine DMs (Direct Messages) verschickt, sondern einfach nur ein Tweet abgesetzt. Sicherlich kann man das alles noch ausbauen, aber für meine Zwecke reicht das erstmal so. Später werde ich es mal erweitern.
Was muss mal also machen? Nicht viel ;) das ganze ist in weniger als 5 Minuten erledigt. Als erstes sollte man sich einen Account bei Twitter für die Statusmeldungen anlegen. Danach sollte man sichergehen, das auf dem Rechner/Server wo Nagios läuft auch Curl installiert ist. Wenn nicht dann einfach nachinstallieren (z.B. unter ubuntu „apt-get install curl“). Anschließend packt man die folgenden Zeilen in die „commands.cfg“ (liegt unter /etc/nagios3/ bei ubuntu) bei Nagios rein:

define command {
command_name notify-by-twitter
command_line /usr/bin/curl --basic -u "user:password" -d "status=[Nagios] $NOTIFICATIONTYPE$ $HOSTALIAS$/$SERVICEDESC$ ist $SERVICESTATE$" http://twitter.com/statuses/update.json
}


define command {
command_name host-notify-by-twitter
command_line /usr/bin/curl --basic -u "user:password" -d "status=[Nagios] $HOSTSTATE$ Status bei $HOSTNAME$" http://twitter.com/statuses/update.json
}

Bei „User“ und „Password“ tragt ihr die entsprechenden Daten von dem vorher erstellten Twitter-Account ein. Die Variablen „$NOTIFICATIONTYPE$, $HOSTALIAS$, $SERVICEDESC$, $SERVICESTATE$“ etc. werden dann von Nagios entsprechend ausgefüllt. Nagios bietet aber auch noch andere an.
Dadurch das ich aber auch noch mehrere Standorte überwachen möchte, gebe ich den Tweets noch die entsprechenden GPS-Koordinaten mit. Somit weiß ich gleich wenn ich den Tweet sehe, an welchem Standort eine Problem vorliegt. Hierfür ergänzt man einfach die Zeilen mit den entsprechenden Parametern:

define command {
command_name notify-by-twitter-B
command_line /usr/bin/curl --basic -u "user:password" -d "status=[Nagios] $NOTIFICATIONTYPE$ $HOSTALIAS$/$SERVICEDESC$ ist $SERVICESTATE$" -d "lat=+52.51246" -d "long=+13.41349" http://twitter.com/statuses/update.json
}


define command {
command_name host-notify-by-twitter-B
command_line /usr/bin/curl --basic -u "user:password" -d "status=[Nagios] $HOSTSTATE$ Status bei $HOSTNAME$" -d "lat=+52.51246" -d "long=+13.41349" http://twitter.com/statuses/update.json
}

Das wäre dann in beiden Fällen Berlin als Standort. Wenn ich mal wieder etwas mehr Zeit habe, dann werde ich das noch um einige Sachen erweitern. Für den Anfang reicht es mir. Ich finde Twitter eignet sich perfekt für sowas. Jetzt müssen nur noch die Twitter-Server auch immer verfügbar sein ;)

Weitere Informationen zum Thema: Twitter API |

Comments are closed.