Zabbix: Benachrichtigungen per Pushbullet verschicken

Für die Überwachung meines Linux Web-Servers habe ich vor kurzem Zabbix. Die Zabbix-Konfiguration war relativ schnell erledigt, es fehlte mir nur noch eine gute Lösung, bei Problemen Nachrichten auf mein Mobiltelefon zu verschicken. Zabbix kennt von Haus aus verschiedene Möglichkeiten, um Benachrichtigungen bei Problemen zu verschicken: Email, Jabber (XMPP) oder SMS. Email ist nicht zuverlässig genug, falls der SMTP-Server ausfällt, SMS geht technisch nicht und für Jabber müsste ich auf meinem Smartphone eine XMPP-App installieren und permanent angemeldet sein.

Ich bin dann schließlich auf Pushbullet gekommen. Diese App verwende ich schon lange, um Benachrichtigungen vom Smartphone auf meinen PC weiterzuleiten, und ist daher auch immer aktiv. Mittlerweile kann Pushbullet aber noch einiges mehr. Dazu gehört auch der Versand von Nachrichten per HTTP POST-Request. Da Zabbix für den Versand von Benachrichtigungen beliebige Shell-Scripte aufrufen kann,  ist ein Versand per Pushbullet schnell realisiert. Wie ich es implementiert habe, werde ich im folgenden erläutern.

Voraussetzungen

Zunächst einmal benötigt man die Pushbullet App und natürlich ein Pushbullet-Konto. Anschließend kann man sein persönliches Access Token abrufen, das für den Versand benötigt wird. Dazu muss man sich zunächst einloggen und kann dann das Token unter der URL https://www.pushbullet.com/account abrufen. Das Token wird dann im nächsten Schritt benötigt.

Sollen mehrere Zabbix-Benutzer Benachrichtigungen per Pushbullet bekommen, muss jeder Benutzer ein Konto haben und es wird jeweils das Access Token benötigt.

Shell-Script erstellen

Ich habe Zabbix (Version 2.2) auf einem Ubuntu Linux-System installiert. Auf diesem System verwendet Zabbix das Verzeichnis /usr/lib/zabbix/alertscripts zur Ablage von Shellscripten für den Versand von Benachrichtigungen. Auf anderen System kann sich das Verzeichnis an anderen Stellen befinden.

In diesem Verzeichnis habe ich dann das folgende Script unter dem Namen pushbullet.sh gespeichert und für den Benutzer “zabbix” ausführbar gemacht:

#!/bin/bash
TOKEN="$1"
SUBJECT="$2"
MESSAGE="$3"

curl https://api.pushbullet.com/v2/pushes \
      -k \
      -u $TOKEN: \
      -d type=note \
      -d title="$SUBJECT" \
      -d body="$MESSAGE" \
      -X POST

Der Doppelpunkt hinter der Variablen $TOKEN ist zwingend nötig.

Neuen Media Type erstellen

Als nächstes muss in Zabbix ein neuer “Media Type” erstellt werden. Dazu in der Web-Oberfläche zu Administration/Media Types navigieren und den Button Create new media type drücken. Dann erscheint folgender Dialog:

Pushbullet Media Type

Als Type muss hier “Script” ausgewählt werden und als Script name der Name des Shellscripts eingetragen werden. Nach dem Speichern kann der neue Media Type verwendet werden.

Benutzerkonfiguration ergänzen

Als letztes muss für jeden Benutzer, der via Pushbullet benachrichtigt werden soll, der neue Media Type konfiguriert werden. Dazu in der Zabbix Web-Oberfläche zu Adminstration/Users navigieren, die Ansicht von “User groups” auf “Users” wechseln und den gewünschten User anklicken.

Im User Dialog dann zum Tab Media wechseln und mit Add einen neuen Media Type hinzufügen:

Benutzerkonfiguration

Als Type muss “Pushbullet” ausgewählt werden (bzw. der Name, der im vorherigen Schritt vergeben wurde) und unter Send to das Access Token des Benutzers.

Nach dem Speichern der neuen Einstellungen werden dann Meldungen der gewünschten Severity per Pushbullet verschickt.

comments powered by Disqus