Notifications von Icinga oder Nagios per WhatsApp verschicken

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

  1. 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

  2. Hi, hat sich erledigt! Ich hab den Namen der Config Datei falsch geschrieben! Funktioniert nun tadellos! Herzlichen Dank

Kommentare sind geschlossen.

Kommentare sind geschlossen.