Bot Telegram para recibir notificaciones de Check_mk
10 abril, 2019
General

Bot Telegram para recibir notificaciones de Check_mk
En esta entrada voy a comentar el proceso de configuración de un bot de telegram que nos notifique de las alertas de nuestro Chek_mk.
Creación del bot-Telegram
Buscamos @BotFather el padre de todos los bots.
Introducimos /newbot o hacemos click en la opción /newbot
Nos pedirá el nombre que queremos ponerle a nuestro bot
Nos informará de cual es el token API de nuestro bot
Si le decimos /mybots
Podremos seleccionar uno de nuestros bots creados y modificar sus atributos, como por ejemplo, su imagen de avatar
Y le enviamos la imagen que queramos como avatar:
Asegurarse de enviarlo como foto y no como archivo
ID Chat
Para conocer nuestro ID Chat, tenemos varios métodos. Uno muy sencillo sería hablar con cualquiera de los siguientes bots:
Diciéndole /start o /getid nos informará de nuestro ID de Chat.
Mediante este ID luego podremos filtrar que sólo nosotros podamos usar nuestro bot.
Script de notificación telegram – Check_mk
Descargamos el script, es una versión modificada del script de «mail»
Lo debemos de colocar en ~/local/share/check_mk/notifications
y darle permisos de ejecución
chmod +x telegram
En nuestro caso, este directorio es:
Debemos editar las primeras líneas con el TOKEN API y nuestro IDCHAT
### EDITAR AQUI ###
telegram_bot_token = ‘EDITAR’
idchat =‘EDITAR’
Reiniciamos nuestro sitio check_mk
omd su [sitio check_mk]
omd restart
Configurar alerta
Ahora podemos ir a «Alertas»
Y si hicimos todo bien, nos aparecerá un nuevo método «telegram»
amigo no funciona… mira el error que sale
2019-05-30 22:03:35 executing /omd/sites/gestion/local/share/check_mk/notifications/telegram
2019-05-30 22:03:36 Output: Traceback (most recent call last):
2019-05-30 22:03:36 Output: File "/omd/sites/gestion/local/share/check_mk/notifications/telegram", line 112, in
2019-05-30 22:03:36 Output: main()
2019-05-30 22:03:36 Output: File "/omd/sites/gestion/local/share/check_mk/notifications/telegram", line 110, in main
2019-05-30 22:03:36 Output: send_telegram_message(telegram_bot_token, telegram_chatid, text)
2019-05-30 22:03:36 Output: File "/omd/sites/gestion/local/share/check_mk/notifications/telegram", line 101, in send_telegram_message
2019-05-30 22:03:36 Output: sys.stdout.write('Cannot send Telegram message: HTTP-Error %s %sn' % (e.code, e))
2019-05-30 22:03:36 Output: AttributeError: 'URLError' object has no attribute 'code'
2019-05-30 22:03:36 Plugin exited with code 1
Has editado correctamente la sección
### EDITAR AQUI ###
telegram_bot_token = 'AajGKQj……………………'
idchat ='44………………………'
??
Amigo actualmente se hace la consulta por el service WEB de telegram y no responde:
https://api.telegram.org/botTOKEN/sendMessage.
El resultado es el siguiente:
{"ok":false,"error_code":400,"description":"Bad Request: message text is empty"}
pero si hago la siguiente consulta, mire la respuesta del service web:
{"ok":true,"result":[{"update_id":XXX,
"message":{"message_id":13,"from":{"id":XXX,"is_bot":false,"first_name":"Rafael","last_name":"Trujillo","language_code":"en"},"chat":{"id":XXX,"first_name":"Rafael","last_name":"Trujillo","type":"private"},"date":1559786070,"text":"Ole"}}]}
claro pero https://api.telegram.org/botTOKEN/sendMessage.
hay que sustituir el botTOKEN
Si, ya se puso el token y no funcionó.
Esto al menos si te funciona no ? https://api.telegram.org/botSEGUIDODETUAPITOKEN/getUpdates
El bot responde bien, pero check_mk no envia nada
Si el plugin pertenece al usuario de check_mk.. tiene permisos de ejecución.. y está bien configurado con el
telegram_bot_token = 'EDITAR'
idchat ='EDITAR'
y sigue sin ir, entonces es raro!! No sabría por qué puede ser!
Hola, con que version de check-mk fue generado el script, lo probe y me da el siguiente error (coloque el token del bot y el id chat)
2019-07-03 15:18:17 Notification channel with plugin telegram
2019-07-03 15:18:17 executing /omd/sites/sitetest/share/check_mk/notifications/telegram
2019-07-03 15:18:19 Output: Cannot send Telegram message: HTTP-Error 400 HTTP Error 400: Bad Request
Hola,
La notificación me funciono perfecto en la versión 1.2.8 de check_mk, es buena opción depurar el problema desde una consola de linux ejecutando esto para validar que el TOKENDELBOT que usas y el ID del chat son correctos.
curl -s -X POST https://api.telegram.org/botTOKENDETUBOT/sendMessage -d chat_id=IDDELCHATQUERECIBIRAELMENSAJE -d text="Mensaje a enviar"
Hola, la notificación a Telegram me funciona desde el prompt vía curl usando la sintaxis que publica Ms en este blog, pero me da error el script:
Qué puede ser?
Traceback (most recent call last):
File «./telegram», line 112, in
main()
File «./telegram», line 109, in main
text = construct_message_text(context)
File «./telegram», line 58, in construct_message_text
notification_type = context[«NOTIFICATIONTYPE»]
KeyError: ‘NOTIFICATIONTYPE’
Funciona perfecto en check_mk 1.6.0p11, segui los pasos indicados y llegaron las alertas sin problemas.
Me alegro de que te fuera útil!
Me ha funcionado perfectamente siguiendo la guía (como dato, cuando creas la notificación en check_mk debes marcar la casilla de notificar a todos los usuarios, no solo a todos los contactos) Un saludo
¡Que bien. Me alegro de que te fuera útil!
Hola Evaristo, muchas gracias, es un excelente aporte y me funcionó. Solo tengo un problema porque me llegan 2 notificaciones del mismo evento es decir, se repiten.
2020-11-04 11:31:36 Global rule ‘Notify all contacts of a host/service via Telegram’…
2020-11-04 11:31:36 -> matches!
2020-11-04 11:31:36 – adding notification of user1, user2, user3via Telegram
2020-11-04 11:31:36 Executing 1 notifications:
2020-11-04 11:31:36 * notifying user1, user2, user3 via Telegram, parameters: (no parameters), bulk: no
2020-11-04 11:31:36 executing /omd/sites/seguridad/local/share/check_mk/notifications/Telegram
2020-11-04 11:31:37 executing /omd/sites/seguridad/local/share/check_mk/notifications/Telegram
2020-11-04 11:31:38 executing /omd/sites/seguridad/local/share/check_mk/notifications/Telegram
muchas gracias, no me funciono al principio porque el usuario que puse en el notificación no podía enviar notificación o no estaba habilitado