Wie würde ein Kollege Euch wohl über einen IT-Notfall alarmieren? Per Messenger? Das geht auch automatisiert mit Checkmk und Telegram.

Alarme per SMS oder Mail sind gut und schön, aber man hat sich doch an Messenger gewöhnt, oder? Und mit Telegram ist es auch gar kein Problem Notifications von Checkmk direkt dort zu empfangen. Hier geht es um eine Minimallösung mit möglichst wenig Aufwand – etwas Demo-Code aus dem Handbuch und einer einzigen Zeile Bash-Code.

Vorgehen und Alternativen

Gleich seht Ihr Schritt für Schritt, wie Ihr Alarmierungen in Form einer Textdatei in einem Telegram-Chat empfangt. Zur Demonstration genügt hier tatsächlich das Beispiel-Alarmierungsskript aus dem Checkmk-Handbuch: Bei Alarmierung wird eine Textdatei mit den Daten zum Ereignis lokal gespeichert. Mit einer weiteren Zeile wird diese Datei dann an Telegram gesendet.

Es geht aber auch komfortabler: Im Netz gibt es einige Alarmierungsskripte, die statt einer Datei gleich sauber formatierte Infos verschicken – grundsätzlich ist die Vorgehensweise aber identisch. Ein solches Skript findet Ihr beispielsweise hier bei Checkmk-Trainer Karl Deutsch, der auch eine Anleitung für Threema hat. Generell ist es nicht schwierig, statt einer Datei Text zu versenden, macht aber doch ein paar Zeilen mehr Code.

1. Telegram-Bot erstellen

Tja, das fängt gut an: Zunächst benötigt Ihr einen Telegram-Bot samt zugehörigem API-Token für den Zugriff. Wie das geht, zeigen wir Euch hier im Detail. Die Anleitung zeigt ebenfalls, wie mit dem Token Texte und Dateien an Telegram verschickt werden. Sofern Ihr mit Checkmk und den Notifications eh vertraut seid, steckt die eigentliche Info eher dort.

2. Alarmierungsskript schreiben

Ein gültiges Alarmierungsskript benötigt im Grunde nur einen Titel und eine einzelne Befehlszeile. Aber um den Blick auf das Handbuch zu lenken, kopiert einfach den Beispielcode, packt ihn in eine Datei /omd/sites/MYSITE/local/share/check_mk/notifications/foobar und ergänzt ihn um die curl-Zeile zu folgendem Gesamtkunstwerk:

#!/bin/bash
# Foobar Teleprompter
env | grep NOTIFY_ | sort > $OMD_ROOT/tmp/foobar.out
curl -X  POST "https://api.telegram.org/bot123456:ABCDE/sendDocument" -F chat_id=-1234567890 -F document="@/omd/sites/mysite/tmp/foobar.out"   
echo "Successfully written $OMD_ROOT/tmp/foobar.out"
exit 0

Zunächst werden über env die dem Skript übergebenen Variablen ausgelesen, mit grep nach NOTIFY_ gefiltert und dann sortiert in die Datei foobar.out geschrieben.

In der curl-Zeile wird nun der aus dem Telegram-Bot-Workshop bekannte Datei-Senden-Aufruf genutzt, um eben jene foobar.out an den angegebenen Chat zu senden. Achtet auf das @ vor dem Pfad – das vergisst man schnell ;)

Anschließend speichern und mit chmod +x foobar ausführbar machen, fertig.

telegram checkmk notifications

Demo-Code plus curl-Zeile.

Und genau an dieser Stelle könntet Ihr im Skript natürlich mehr machen: Zum Beispiel den grep-Filter verfeinern, einzelne Daten in Variablen speichern, Texte aus Variablen direkt in Telegram ausgeben und so weiter – eben die Feinheiten, die Euch gegebenenfalls Skripte aus dem Netz abnehmen.

3. Alarmierungsregel erstellen

Erstellt nun über WATO|Notifications eine neue Alarmierungsregel und setzt dort als Notification Method Euer Skript, das als Foobar Teleprompter auftauchen sollte. Alle sonstigen Optionen könnt Ihr ignorieren. Sofern mehrere Nutzer existieren, solltet Ihr vielleicht zum Testen noch einen Filter auf einen bestimmten Empfänger setzen.

telegram checkmk notifications

Das Skript als Alarmierungsmethode.

4. Versand testen

Zum Testen könnt Ihr wie gewohnt eine Seite mit Services aufrufen und irgendetwas über die Kommandos künstlich auf Critical setzen …

telegram checkmk notifications

Zum Testen einfach einen Service per Fake auf Critical setzen.

… und schon sollte die Datei in Eurem Telegram-Chat landen.

telegram checkmk notifications

Die Datei mit allen Infos in Telegram.

Die Ausgabe umfasst hier ganze 106 Zeilen – es lohnt sich also, etwas präziser als per grep NOTIFY_ zu filtern.

5. Troubleshooting

Wenn die Alarmierung nicht klappt gibt es viele Optionen, die dafür verantwortlich sein könnten – allesamt zu finden hier im Handbuch. Zudem könnt Ihr schauen, ob sich das Skript manuell ausführen lässt, ob die Datei foobar.out tatsächlich geschrieben wird, ob der Versand mit Telegram generell funktioniert (am besten mit Text statt einer Datei testen) und natürlich, ob Konfiguration und Agents aktuell sind.

Mehr zu Checkmk hier und mehr zu Telegram hier.

Über den Autor

Mirco Lang

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler.

Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds.

Wenn ich Dir helfen konnte und/oder Du hier mehr über Open Source, Linux, Bastelkram oder auch Windows-Basics lesen möchtest:
Spendier mir einen Kaffee via Paypal.

Kommentieren:

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.