08.07.2023 - Anleitung fĂŒr Checkmk 2.2 aktualisiert. 03.02.2022 - Anleitung fĂŒr Checkmk 2.0 aktualisiert. 15.01.2022 - Die alten Python Skripte laufen unter Checkmk 2.0 nicht mehr. 13.01.2019 - Anleitung und Skript fĂŒr Check_MK 1.5
Damit Checkmk Alarmierungen (Notifications) an den Telegram Messenger schicken kann, benötigt man:
- einen Bot
- einen Benutzernamen fĂŒr den Bot
- einen API-Token
- eine Chat-ID
Telegram – Bot erstellen
In Telegram sucht man nach @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 hat man beim anlegen des neuen Bots schon erhalten. Jetzt braucht man noch die 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 hat man fĂŒr den Telegram Bot jetzt alles zusammen.
Telegram – Bot testen
Um zu testen, ob beim neuen Bot auch Nachrichten ankommen, 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.
Checkmk – das Telegram Notify Skript
Dies beiden Àlteren Skripte von metzlog.srcbox.net und karl-deutsch.at laufen unter der aktuellen Checkmk Version nicht. (Python Problem)
Stefan Gehn hat sein altes Skript aktualisiert und ein Telegram Checkmk Plugin geschrieben. (Vielen Dank dafĂŒr!)
Als SITE User herunterladen und installieren.
Checkmk 2.2.0
OMD[test]:~$ wget https://exchange.checkmk.com/packages/telegram-notifications/761/telegram_notifications-2.0.0.mkp OMD[test]:~$ mkp add telegram_notifications-2.0.0.mkp OMD[test]:~$ mkp enable telegram_notifications OMD[test]:~$ mkp list Name Version Title Author Req. Version Until Version Files State ---------------------- ------- ---------------------- ----------------------------------- ------------ ------------- ----- ----------------------------- telegram_notifications 2.0.0 Telegram Notifications Stefan Gehn <stefan+cmk@srcbox.net> 2.0.0 None 2 Enabled (active on this site)
Die Notifications mĂŒssen richtig konfiguriert sein.
Setup -> Users -> Users -> cmkadmin -> Contact Groups, Everything aktivieren ODER Setup -> Events -> Notifications -> Telegram plugin -> Contact selection -> The following users, cmkadmin
Checkmk 2.0.0
OMD[test]:~$ wget https://exchange.checkmk.com/packages/telegram-notifications/761/telegram_notifications-2.0.0.mkp OMD[test]:~$ mkp install telegram_notifications-2.0.0.mkp OMD[test]:~$ mkp show telegram_notifications-2.0.0.mkp Name: telegram_notifications Version: 2.0.0 Packaged on Checkmk Version: 2.0.0p18 Required Checkmk Version: 2.0.0 Valid until Checkmk version: No version limitation Title: Telegram Notifications Author: Stefan Gehn <stefan+cmk@srcbox.net> Download-URL: https://git.srcbox.net/stefan/checkmk_telegram_notifications Files: notifications(1) web(1) Description: Send notifications via Telegram
Die Dateien liegen unter:
OMD[test]:~/local/share/check_mk/notifications/telegram OMD[test]:~/local/share/check_mk/web/plugins/wato/telegram.py
Checkmk – Notify mit Telegram anlegen
Setup â Events â Notifications, neue Rule erstellen. API Token und Chat ID eingeben, fertig.
Checkmk – Notify mit Telegram testen
Die Telegram Alarmierung sollte jetzt zuerst einmal getestet werden. In Checkmk auf einen Host und einen beliebigen Service auswÀhlen.
Oben auf Commands â Fake check results und mal ein Warning senden. Kam sofort in Telegram an!
Checkmk – Notify Log
Ein Blick ins ~/var/log/notify.log hilft eventuell Probleme zu finden.
OMD[blan]:~/var/log$ tail -f -n 20 notify.log 2023-01-04 13:29:33,258 [20] [cmk.base.notify] Global rule 'Telegram'... 2023-01-04 13:29:33,258 [20] [cmk.base.notify] -> matches! 2023-01-04 13:29:33,258 [20] [cmk.base.notify] - adding notification of cmkadmin via telegram 2023-01-04 13:29:33,259 [15] [cmk.base.notify] Global rule 'Notify via HTML Email'... 2023-01-04 13:29:33,259 [15] [cmk.base.notify] -> does not match: This rule is disabled 2023-01-04 13:29:33,259 [20] [cmk.base.notify] Executing 1 notifications: 2023-01-04 13:29:33,260 [20] [cmk.base.notify] * notifying cmkadmin via telegram, parameters: bot_token, chat_id, bulk: no 2023-01-04 13:29:33,260 [20] [cmk.base.notify] executing /omd/sites/blan/local/share/check_mk/notifications/telegram 2023-01-04 13:29:33,688 [20] [cmk.base.notify] Output: Sent message to Telegram chat 123456789 2023-01-04 13:30:04,919 [20] [cmk.base.notify] ---------------------------------------------------------------------- 2023-01-04 13:30:04,919 [20] [cmk.base.notify] Got raw notification (acng;check_apt) context with 52 variables 2023-01-04 13:30:04,923 [20] [cmk.base.notify] Global rule 'Telegram'... 2023-01-04 13:30:04,923 [20] [cmk.base.notify] -> matches!
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.
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Ă:
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
Ist bei dir was verÀndert worden. Updates, etc.?
Teste mal den Bot ob der noch Nachrichten annimmt. (Im Browser)
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.
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)Da soll mal einer drauf kommen. ;)
Danke fĂŒr die RĂŒckmeldung.
Hallo zusammen,
bei mir kam von heute auf morgen ein Problem mit dem Umlaut ĂŒ. Sobald in einer Notification etwas mit ĂŒ steht
kommt keine Telegram-Nachricht an und unter fehlgeschlagene Benachrichtigungen steht folgendes:
UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xf6′ in position 293: ordinal not in range(128)
Traceback (most recent call last): -- File "/omd/sites/check/local/share/check_mk/notifications/telegram", line 112, in -- main() -- File "/omd/sites/check/local/share/check_mk/notifications/telegram", line 110, in main -- send_telegram_message(telegram_bot_token, telegram_chatid, text) -- File "/omd/sites/check/local/share/check_mk/notifications/telegram", line 96, in send_telegram_message -- data = urllib.urlencode({'chat_id':chat_id, 'text':text, 'parse_mode':'Markdown'}) -- File "/omd/sites/check/lib/python2.7/urllib.py", line 1342, in urlencode -- v = quote_plus(str(v)) -- UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 288: ordinal not in range(128)
Hat das Problem noch jemand bzw. kennt einen Lösungsansatz?
Vielen Dank!
Stefan
Hallo Stefan,
haben sich bei dir vielleicht die locales geÀndert?
Habs gerade nochmal kontrolliert – in der Ausgabe steht UTF-8 mit dabei…hast du vielleicht noch einen Tipp fĂŒr mich? Hab nochmal etwas nachverfolgt – nach dem Update auf 1.6 hat es noch funktioniert – kurze Zeit spĂ€ter war Feierabend…
[]# locale
LANG=de_DE.UTF-8
LC_CTYPE=”de_DE.UTF-8″
LC_NUMERIC=”de_DE.UTF-8″
LC_TIME=”de_DE.UTF-8″
LC_COLLATE=”de_DE.UTF-8″
LC_MONETARY=”de_DE.UTF-8″
LC_MESSAGES=”de_DE.UTF-8″
LC_PAPER=”de_DE.UTF-8″
LC_NAME=”de_DE.UTF-8″
LC_ADDRESS=”de_DE.UTF-8″
LC_TELEPHONE=”de_DE.UTF-8″
LC_MEASUREMENT=”de_DE.UTF-8″
LC_IDENTIFICATION=”de_DE.UTF-8″
LC_ALL=
[]# localectl status
System Locale: LANG=de_DE.UTF-8
VC Keymap: de-nodeadkeys
X11 Layout: de
X11 Variant: nodeadkeys
Ich denke eher das Python ein Problem mit den Umlauten hat.
Hab diesen Tipp gefunden:
export PYTHONIOENCODING=UTF-8
Hallo zusammen,
habe das gleiche Problem wie Stefan. Bei mir tritt das Problem in Verbindung mit Meldungen von Temperatur-Sensoren auf.
Leider noch keine Lösung gefunden….
Hattest du das mal ausprobiert?
export PYTHONIOENCODING=UTF-8
Ja, hatte ich versucht. Hat leider nicht geholfen.
Reicht es diesen Befehl in der Konsole als der entsprechende OMD User auszufĂŒhren?
Sollte reichen.
Wenn es damit aber nicht funktioniert, mal als root user ausfĂŒhren und testen.
Hallo, hab das gleiche Problem.. Habt ihr das gelöst bekommen?
Habe “export PYTHONIOENCODING=UTF-8” als Site-User und als root probiert.. ohne Erfolg..
Fehler ist bei mir
“UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xdf’ in position 86: ordinal not in range(128)”
Folgendes mit in den telegram notification code:
reload(sys)
sys.setdefaultencoding('utf8')
DANKE! :)
Mal eine dezente Frage, ich hab alles soweit eingerichtet, die Benachrichtigungen werden auch gesendet allerdings immer 3 mal woran kann das liegen.
Da muss ich passen. :(
Guten Tag,
was muss in Zeile 1 geÀndert werden?
Eigentlich
/usr/bin/python
auf/usr/bin/env python
Ist aber vielleicht garnicht mehr notwendig, wenn beide Befehle keine unterschiedlichen Python Versionen ausgeben.
$ /usr/bin/python --version
Python 2.7.16
$ /usr/bin/env python --version
Python 2.7.16
Hallo, hat einer einen Ansatz wo ich suchen könnte – ich habe scheinbar ein SSL Problem : SSL: CERTIFICATE_VERIFY_FAILED
requests.exceptions.SSLError: HTTPSConnectionPool(host=’api.telegram.org’, port=443): Max retries exceeded with url: /bot5125953981:AAEh7FWJpNS9aiFUpMcdN3GWSr7LSk_GMmU/sendMessage (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)’)))
Ich habe keine Proxy oder sowas dazwischen.
Nutzt du das Telegram Checkmk Plugin?
Hallo,
ja – so wie oben in dieser Doku beschrieben. Basis ist Debian und CheckMK 2.1.0b1. Als wenn er das Zert, was er von Telekom bekommt, nicht als Valid ansieht.
Hab das eben mit Checkmk 2.1.0b2 und dem Telegram Checkmk Plugin ausprobiert, funktioniert.
Kann deinen Fehler leider nicht nachvollziehen.
Hallo Zusammen,
Ich habe alles wie oben eingerichtet bekomme aber keine Benachrichtigung. gibt es eine Möglichkeit das ganze aus der Konsole zu testen?
Wen ich von Hand eine Nachricht sende funktioniert es:
https://api.telegram.org/bot%3CIDY/sendMessage?chat_id=12345&text=Test
Schau mal ins ~/var/log/notify.log, vielleicht findest du dort den Fehler.
Stimmen deine contact groups?
Hi zusammen,
ich bin aktuell recht ratlos.
Habe das Plugin wie oben beschrieben installiert, auĂer das der mkp install depricated ist, und durch mkp enabled ersetzt wurde. (Checkmk Raw Edition 2.2.0p4).
GrundsÀtzlich funktioniert via curl der Aufruf der Telegram API Problemlos und Nachrichten werden versendet.
Sobald ich aber im Checkmk ein Event auslöse, bekomme ich leider keine Benachrichtung.
Im notify.log steht nur das die Regel eigentlich greifen mĂŒsst:
2023-07-04 15:31:44,599 [20] [cmk.base.notify] Got raw notification (checkmk;Postfix Queue) context with 52 variables
2023-07-04 15:31:44,600 [20] [cmk.base.notify] Global rule ‘Telegram Benachrichtigung’…
2023-07-04 15:31:44,600 [20] [cmk.base.notify] -> matches!
Als Kontaktwahl sind alle Benutzer hinterlegt, und auch als Bedingung alle Hosts.
Kann es sein das ich noch etwas weiteres konfigurieren muss ?
Danke und GruĂ
Habs gerade mal unter 2.2.0p5 probiert.
# ~/var/log/notify.log
...
2 rules matched, but no notification has been created.
...
Die Notifications mĂŒssen noch konfiguriert werden.
Setup -> Users -> Users -> cmkadmin -> Contact Groups, Everything aktivieren
ODER
Setup -> Events -> Notifications -> Telegram plugin -> Contact selection -> The following users, cmkadmin
Hat super geklappt. als IT-Neuling könnte es noch ein wenig ausfĂŒhrlicher sein ;)