Notifications von Icinga oder Nagios per WhatsApp verschicken
Ich habe in einem anderen Post bereits erklärt, wie man WhatsApp-Nachrichten per Kommandozeile verschicken kann. Wenn die Voraussetzungen erfüllt sind, sind der Fantasie quasi keine Grenzen mehr gesetzt. Was ich als erstes mit den neuen Möglichkeiten gemacht habe ist, sämtliche Host- und Service-Notification meines Icinga-Servers von SMS auf WhatsApp umzustellen.
Das Ganze lässt sich ziemlich leicht umsetzen, wenn man erst einmal die Einrichtung von Yowsup, dem Python-Skript zum Verschicken von Nachrichten, abgeschlossen hat.
Ich erkläre hier kurz, wie man sich also in Zukunft seine Host- und Service-Notifications per WhatsApp zuschicken lassen kann.
In diesem Beispiel gehe ich davon aus, das sämtliche Yowsup-Komponenten Nagios/Icinga Plugin-Verzeichnis liegen. In diesem Fall ist es das Verzeichnis „/usr/lib/nagios/plugins/“ und wurde in der Nagios/Icinga-Konfiguration auf die „$USER1“ Variable gesetzt.
Contact-Definition erweitern
Bereits bestehende Contact-Definitionen, über die bisher Notifications an Nutzer des Nagios/Icinga ausgelöst werden, müssen um ein weiteres Attribut erweitert werden: Die Handynummer. Anfangs habe ich in meinem Fall das bereits vorhanden Attribut „pager“ genutzt, um die Handynummer für WhatsApp dem Kontakt/Nutzer zuzuweisen. Sauberer ist es allerdings, wenn dazu eine benutzerdefinierte Variable benutzt wird. Diese so genannten „Custom-Variables“ zeichnen sich durch den am Anfang stehenden Unterstrich (_) aus und können in beliebiger Anzahl angelegt werden.
Eine Contact-Definiton (/etc/icinga/objects/contacts.cfg) könnte wie folgt aussehen:
define contact{ contact_name timo use generic-contact alias Timo Schlueter email me@timo.in _whatsapp 4915777818466 } |
Um diese Benutzerdefinierte Variable (_whatsapp) nun in anderen Objekt-Definitionen von Nagios/Icinga zu nutzen, muss fortan die Variable $_CONTACTSWHATSAPP$ verwendet werden.
Command-Definition anlegen
Nach der Anpassung der Contact-Definition muss eine neue Command-Definition angelegt werden, über die der Versand der Nachrichten ausgelöst wird. An sich unterscheidet sich diese Definition kaum von der bereits im Umfang von Nagios/Icinga enthaltenen E-Mail-Notification.
Eine Command-Definition (/etc/icinga/objects/commands.cfg) könnte wie folgt aussehen:
define command { command_name notify-host-by-whatsapp command_line /usr/bin/python $USER1$/yowsup/yowsup-cli -c $USER1$/yowsup/config -s $_CONTACTWHATSAPP$ '$NOTIFICATIONTYPE$ Host : $HOSTNAME$ is $HOSTSTATE$ @ $LONGDATETIME$' } define command { command_name notify-service-by-whatsapp command_line /usr/bin/python $USER1$/yowsup/yowsup-cli -c $USER1$/yowsup/config -s $_CONTACTWHATSAPP$ '$NOTIFICATIONTYPE$ Host : $HOSTNAME$ - Service : $SERVICEDESC$ is $SERVICESTATE$ @ $LONGDATETIME$' } |
Host- und Service-Commands können selbstverständlich auch zusammengefasst werden. Da in diesem Beispiel allerdings unterschiedliche Ausgaben erfolgen sollen, bietet sich die Trennung zwischen „notify-host-by-whatsapp“ und „notify-service-by-whatsapp“ an.
Command-Definition zuordnen
Sind Contact-Definition erweitert und die Command-Definition angelegt, muss anschließend noch die Command-Definition einem Contact zugeordnet werden. In meinem Fall nutze ich Templates für die Zuordnung von Optionen zu Kontakten. Die Zuordnung kann allerdings auch direkt am einzelnen Kontakt erfolgen. Zur Vereinfachung hier die Contact-Definition von oben, welche um die Command-Definiton erweitert wurde:
contact_name timo use generic-contact alias Timo Schlueter email me@timo.in _whatsapp 4915777818466 service_notification_commands notify-service-by-email notify-service-by-whatsapp host_notification_commands notify-host-by-email notify-host-by-whatsapp |
Durch diese Definition wird dem Benutzer „timo“ ab sofort im Falle einer Status-Änderung eines Hosts oder Services nicht nur eine Mail, sondern auch eine Nachricht per WhatsApp zugeschickt.
Noch einige Hinweise:
- Es sollten immer zwei Wege des Versands von Notifications geben. Gerade WhatsApp hat in letzter Zeit häufiger mit Serverproblemen zu kämpfen, weshalb es sich anbietet, neben WhatsApp auch noch eine Mail oder SMS zu versenden.
- Aus Sicht des Datenschutzes ist der Versand von Nachrichten über WhatsApp gesondert zu betrachten. WhatsApp wird im Ausland betrieben und hält sich daher mit hoher Wahrscheinlichkeit nicht an die Datenschutzrichtlinien Deutschlands. Ich würde daher nicht empfehlen, sensible Daten (Server-IPs, Hostnamen etc.) über WhatsApp zu verschicken. Ich verwende Nagios/Icinga hauptsächlich zur Überwachung von Web-Anwendungen und Websites und einigen Web-Servern. In diesem Fall versende ich also ohnehin nur öffentlich zugängliche Informationen. Dies sollte im Vorfeld auf jeden Fall abgewogen werden.
Fragen oder Feedback zu der Anleitung bitte jederzeit gerne als Kommentar, Tweet oder Mail hinterlassen.
5 Gedanken zu „Notifications von Icinga oder Nagios per WhatsApp verschicken“
wie man in der Lage, einen Alarm an die Gruppe WhatsApp senden
regard Abdi (Indonesia)
Hallo,
ein toller Beitrag, den ich sehr aufmerksam verfolgt und ausprobiert habe!
Ich kann wunderbar Nachrichten per Whatsapp senden und Empfangen, nur sobald ich das in Nagios einbaue, klappt es leider nicht mehr.
Im Logfile finde ich folgendes:
[1400055000] wproc: stderr line 01: Traceback (most recent call last):
[1400055000] wproc: stderr line 02: File „/usr/local/nagios/libexec/yowsup/yowsup-cli“, line 306, in
[1400055000] wproc: stderr line 03: elif args[„dbus“]:
[1400055000] wproc: stderr line 04: KeyError: ‚dbus‘
Irgendwelche Ideen dazu? Über eine zeitnahe Antwort wäre ich sehr Dankbar
Viele Grüße
Georg
Hi, hat sich erledigt! Ich hab den Namen der Config Datei falsch geschrieben! Funktioniert nun tadellos! Herzlichen Dank
Könntest du die Command-Definition auch für Icinga 2 machen?
http://monitoring-portal.org/wbb/index.php?page=Thread&threadID=33376
Kommentare sind geschlossen.