Check_MK Alarmierungen an Telegram senden

Damit Check_MK Alarmierungen (Notifications) an den Telegram Messenger schicken kann, benötigen wir:

  • einen Bot
  • einen Benutzernamen für den Bot
  • einen API-Token
  • eine Chat-ID

Telegram – Bot erstellen

In Telegram suchen wir den @BotFather und starten mit ihm einen Chat. Mit /newbot wird ein neuer Bot erstellt.
Weiter im Chat Dialog wird der neue Botname und Benutzername abgefragt und angelegt.

Telegram – API-Token und Chat-ID ermitteln

Den API-Token haben wir beim anlegen des neuen Bots schon erhalten. Jetzt brauchen wir noch unsere Chat-ID.
In Telegram nach dem Benutzernamen des neuen Bots suchen und einen Chat starten. Das ist wichtig! Ein kurzes hallo reicht schon aus.

Als nächstes ruft man folgende URL zusammen mit dem API-Token im Browser auf:

# https://api.telegram.org/bot[HTTP-TOKEN]/getUpdates
https://api.telegram.org/bot643xxxxxxxxxxxxxxxxxxxxxxxxxxxx4Ik/getUpdates

Die Zahlenfolge nach „id“: ist unsere Chat-ID.

Damit haben wir für den Telegram Bot jetzt alles zusammen.

Telegram – Bot testen

Um zu testen, ob beim neuen Bot auch Nachrichten ankommen, kann man im Browser eine entsprechende URL mit einer Nachricht an die Telegram API schicken.

# https://api.telegram.org/bot[HTTP-TOKEN]/sendMessage?chat_id=[CHAT-ID]&text=[NACHRICHT]
https://api.telegram.org/bot436xxxxxxxxxxxxxxxxxxxxxxxxxxxxx4Ik/sendMessage?chat_id=734273480&text=Alles%20OK

Die Nachricht kam sofort im Bot an.

Telegram – Bot Profilbild ändern

Man kann dem Bot auch ein Profilbild zuweisen. Dazu dem BotFather ein /setuserpic senden und dann den Botnamen angeben. Bild hochladen, fertig.

Check_MK – das Telegram Notify Skript

Das Alarmierungsskript kann direkt von metzlog.srcbox.net oder karl-deutsch.de herunterladen werden und muss unter dem SITE User ins Verzeichnis:
~/local/share/check_mk/notifications. Der Name des Skripts ist nicht vorgegeben.

Die Datei ausführbar machen und drei Zeilen im Skript abändern:

OMD[blan]:~/local/share/check_mk/notifications$ chmod 755 check_mk-telegram-notify.py
OMD[blan]:~/local/share/check_mk/notifications$ vi check_mk-telegram-notify.py

Zeile 1
#!/usr/bin/env python

Zeile 24
telegram_bot_token = '101010101:ChangeMeChangeMeChangeMe'

Zeile 105
# telegram_chatid = context.get('TELEGRAM_CHAT_ID')    # Fehler - Cannot send Telegram message: Empty destination chat id
#                                                      # Es muss in Check_MK ein custom attribute mit TELEGRAM_CHAT_ID erstellt werden!
telegram_chatid = 'TELEGRAM_CHAT_ID'                   # OK - Mit diesem direkten Eintrag der Chat-ID funktioniert es.

Die SITE neu starten.

OMD[blan]:~$ omd restart

Check_MK – Notify mit Telegram anlegen

Jetzt kann man sich eigene Alarmierungsregeln in Check_MK anlegen. WATO → Notifications → New Rule → Notification Method → Telegram.

Check_MK – Notify mit Telegram testen

Die Telegram Alarmierung sollte jetzt zuerst einmal getestet werden. In Check_MK auf einen Host und einen beliebigen Service auswählen.
Dann ganz oben auf das Hämmerchen, Fake Check Results, Plugin Output setzen und mal ein Warning senden.

Der Fake Check kam sofort im Telegram Bot an, funktioniert! :)

Hiermit ist die Einrichtung der Check_MK Alarmierung an Telegram abgeschlossen.

TG-Notify – Telegram Notification Bot with Callback for ACK & Downtime

Eine noch etwas umfangreichere Lösung ist TG-Notify von lanbugs.de. Hier kann per Callback sogar an Check_MK zurückgemeldet werden.
Sollte man sich auf jeden Fall auch mal angucken und ausprobieren!

7 Gedanken zu „Check_MK Alarmierungen an Telegram senden“

  1. Hallo,

    ich habe es wie von dir beschrieben mit dem einfachen Skript umgesetzt. Ich kann jedoch versuchen was ich will, es funktioniert bei mir unter 1.5.0p15 nicht. Aus irgendeinem Grund kommen die Nachrichten nicht beim Bot an.

    Hast du ne Idee?

    Dank & Grüße
    Marcel

    Ich habe es mittlerweile hinbekommen. Es war sonderbar, da Nachrichten per HTTP-Requests im Browser z.B. wie erwartet ankamen, jedoch per Skript kam nichts an und keine Fehlermeldung irgendwo zu finden.

    So bin ich am Ende vorgegangen:
    1. als Siteuser angemeldet
    2. Skriptvorlage in das Verzeichnis
    „~/local/share/check_mk/notifications“ als Siteuser heruntergeladen
    3. chmod 755 auf die Datei
    4. Skript wie folgt angepasst:

    Zeile 1
    #!/usr/bin/env python

    Zeile 24
    telegram_bot_token = ‚101010101:ChangeMeChangeMeChangeMe‘

    Zeile 105
    # in Check_MK ein custom attribute mit der internen ID telegram erstellt.
    telegram_chatid = context.get(‚CONTACT_TELEGRAM‘)

    Mit diesem Eintrag funktioniert es.

    Antworten
  2. Hallo zusammen,

    die Benachrichtigungen haben auf Anhieb geklappt, echt Super :)
    Jetzt habe ich nur tägliche Wartungsarbeiten konfiguriert (Server Neustart) und diese greifen bei den Telegram Benachrichtigungen nicht, bei den Email Benachrichtigungen klappt es. Gibt es hier eine Möglichkeit diese ebenfalls zu aktivieren?

    Gruß:

    Antworten
  3. Leider geht das Script seit dem 1.9. nicht mehr.
    tail -f ~/var/log/notify.log sagt:
    2019-09-16 22:09:52 Executing 1 notifications:
    2019-09-16 22:09:52 * notifying cmkadmin via telegram_notify, parameters: (no parameters), bulk: no
    2019-09-16 22:09:52 executing /omd/sites/mysite/local/share/check_mk/notifications/telegram_notify
    2019-09-16 22:10:52 Notification plugin did not finish within 60 seconds. Terminating.
    2019-09-16 22:10:52 Plugin exited with code 1

    Antworten
  4. Der Bot nimmt Nachrichten an. Sowohl mit CURL, als auch im Browser.
    Auch ein Neuaufsetzen von CheckMK im Docker hat nichts gebracht. Es ist zum Mäuse melken.

    Antworten
  5. Fehler gefunden. IPv6 war aktiv. Dort funktioniert das Routing aber nicht. Auf der Konsole kann man Nachrichten senden. Die werden alle per IPv4 übertragen.
    Python URL-Requests nutzt, wenn vorhanden IPv6. Das Script bleibt ohne Rückmeldung einfach hängen.
    Hilfe schaffte nur: echo „net.ipv6.conf.all.disable_ipv6 = 1“ >> /etc/sysctl.conf (Debian)

    Antworten

Schreibe einen Kommentar