Evaristo R

Técnico Administrador de Sistemas

Técnico Post-productor (VFX, 3D, Vídeo digital)

Piloto de RPAS certificado por AESA

Profesor e-Learning

Evaristo R

Técnico Administrador de Sistemas

Técnico Post-productor (VFX, 3D, Vídeo digital)

Piloto de RPAS certificado por AESA

Profesor e-Learning

Blog Post

Bot Telegram para recibir notificaciones de Check_mk

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

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»

Las alertas comenzarán a llegarnos por Telegram

En definitiva, una opción muy interesante como complemento a otros métodos de notificación en los que no dependamos de un servicio externo, como es Telegram.
Taggs:
20 Comments
  • Unknown 11:25 pm 30 mayo, 2019 Responder

    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

  • evaristo 4:39 am 31 mayo, 2019 Responder

    Has editado correctamente la sección
    ### EDITAR AQUI ###
    telegram_bot_token = 'AajGKQj……………………'
    idchat ='44………………………'

    ??

    • Rafael Trujillo 10:22 pm 6 junio, 2019 Responder

      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"}}]}

    • evaristo 4:31 am 7 junio, 2019 Responder

      claro pero https://api.telegram.org/botTOKEN/sendMessage.
      hay que sustituir el botTOKEN

  • Rafael Trujillo 10:47 pm 7 junio, 2019 Responder

    Si, ya se puso el token y no funcionó.

  • Unknown 5:43 pm 10 junio, 2019 Responder

    El bot responde bien, pero check_mk no envia nada

    • evaristo 7:00 pm 10 junio, 2019 Responder

      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!

  • Unknown 7:29 pm 3 julio, 2019 Responder

    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

  • Ms 2:35 pm 4 julio, 2019 Responder

    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"

  • Mike 3:34 pm 23 agosto, 2019 Responder

    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’

  • RGO 11:40 pm 11 mayo, 2020 Responder

    Funciona perfecto en check_mk 1.6.0p11, segui los pasos indicados y llegaron las alertas sin problemas.

  • XDarktemiX 2:59 pm 5 junio, 2020 Responder

    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

  • Robert 6:40 pm 4 noviembre, 2020 Responder

    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

  • Linuz zapata 11:33 pm 20 noviembre, 2020 Responder

    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

  • Eva 12:02 pm 5 febrero, 2021 Responder

    Hola Evaristo,
    gracias por tan buen contenido. Dejo por aquí un artículo en el que también hablamos de la creación de un bot para Telegram usando Python. Por si alguno siente curiosidad: https://saasradar.net/blog/creacion-bot-telegram/
    Gracias!

    • Evaristo R 11:30 am 12 marzo, 2021 Responder

      Gracias! Me alegro de que te gustase!
      Muy buen artículo por cierto! 🙂

  • Mr. Oswald 4:45 am 29 marzo, 2021 Responder

    Hola amigos, con la versión check-mk-raw-2.0.0p1_0 al parecer no funciona… alguna pista?

Write a comment

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. Si está interesado en leer el aviso de privacidad pinche aquí.

ACEPTAR
Aviso de cookies