3 min read

CheckMK Notifications über Telegram

Auch dieser Artikel befand sich seit über einem Jahr unter "Drafts" und ich habe ihn nie zu ende geschrieben... Nun aber. Also: was war meine Ausgangssituation? Ich habe auf der Arbeit sehr viel mit Monitoring Systemen zu tun - also wundert es wahrscheinlich die wenigsten dass ich meine privaten Kisten natürlich auch überwachen lasse. Hierzu nahm ich dann CheckMK, um mir auch vieles angucken zu können, wenn wir uns auf der Arbeit neue Themen anschauen.

XMPP

Auf der Arbeit ist ein spezifisches Alerting Tool an CMK angeschlossen, welches dann SMS und normale Mails als Notifications versendet. Ein ehemaliger Kollege von mir verwendet Telegram als Notification Methode, ich wollte mir dann aber mal den Weg über XMPP anschauen. Ich kann hier mal beschreiben, wie in etwa der Weg der Notifications über XMPP abläuft, letztendlich habe ich diesen aber nach über einem halben Jahr austesten, verworfen, da die Föderation der einzelnen Server nicht so hohe Uptime Zeiten bietet, wie ein zentralisierter Dienst. Und die ständige Uptime ist bei einem Notification Server fürs Monitoring, wenn auch nur privat, nicht irrelevant. Ich habe das damals via sendxmpp gelöst, die Dateien die ich angepackt habe waren /omd/sites/home/.sendxmpp.rc und /omd/sites/home/share/check_mk/notifications/xmpp. Das Zertifikat vom entsprechenden Server habe ich dann nach /omd/sites/home/ca.pem kopiert und die entsprechende Regeln in CheckMK angelegt.
Auf Android habe ich dann Conversation als XMPP App genutzt, über die ich die Meldungen dann erhalten habe.
Darum soll es ja aber in diesem Artikel gar nicht gehen.

Telegram

Ich nutze hierfür die Dateien, die im Repo https://github.com/filipnet/checkmk-telegram-notify zu Verfügung gestellt werden. Zunächst einmal führt man die im Repo beschriebene Installation durch:

Zum CheckMK Site Nutzer wechseln:
su - mysite

In den Notification Ordner wechseln:
cd ~/local/share/check_mk/notifications/

Das Skript aus dem Repo clonen:
git clone https://github.com/filipnet/checkmk-telegram-notify.git .

Dem Skript die entsprechenden Berechtigungen zum Ausführen geben:
chmod +x check_mk_telegram-notify.sh

Mit CheckMK >2.0.0 klont man dann unter Setup → Events → Notifications die bestehende Regel:

Um die Regel mit den entsprechenden Telegram IDs zu füllen, muss man zunächst mit @BotFather einen neuen Bot erstellen (/newbot). Daraufhin gibt man die neu zu erstellende ID ein, und erhält den API Token.
Die Chat ID erhält man, indem man über web.telegram.org den eben erstellten Bot über den Namen anclickt und /start schreibt. Dann wählt man den neuen Chat aus und kann die Chat ID über die URL herauskopieren:

Chat ID

So sieht die erstellte Regel nun bei mir aus:

Der Token und die Chat ID werden damit an das Skript übergeben und darin den Variablen TOKEN und CHAT_ID zugeordnet:
TOKEN="${NOTIFY_PARAMETER_1}"
CHAT_ID="${NOTIFY_PARAMETER_2}"

Fazit

Ich nutze diese Methode nun schon mehr als 2 Monate für meine private CheckMK Instanz. Ich bin mit dieser Methode deutlich zufriedener als mit der vorherigen XMPP Methode. Klar, XMPP ist Telegram in Sachen Datenschutz deutlich überlegen, aber bei einem Monitoringsetup, wo es auf die Verfügbarkeit des Dienstes ankommt, ist Telegram in diesem Setup deutlich überlegen. Hier mal ein Screenshot wie die Notifications im Desktop Client von Telegram aussehen:

NTP Meldung vom privaten Univention Server

Autor: peterge