Estas de guardia y explota todo en tu trabajo. Que pasó???. Vas al correo y tenés una lista interminable de mails de Nagios dandote detalles de todo lo que paso, muchos emails!. Bueno, esta semana me molesté con eso y busqué alternativas para que en vez de mails sean mensajitos en telegram que pueda revisar en un vistazo. A esta altura del año los correos estresan demasiado!.

Telegram es una plataforma de mensajería y voip que nació en Rusia. Funciona como Whatsapp y en algunos casos de inspiración para Whatsapp. Su código está disponible por si querés montar tu propio fork con servidores locales y también tiene un «community support» que le da un toque de «Opensource».(https://telegram.org/)

Buscando info en la red y chatgpt saqué funcionando un script en cuestión de minutos.

Que descubrí?

Crear un bot en Telegram es muy sencillo. Solo basta con iniciar conversación con @botfather, el bot padrino de Telegram que te brindará un breve tutorial de como crear tu bot.

Abrimos una chat con @botfather y lo iniciamos con /newbot esta opción nos va a hacer varias preguntas para crear nuestro bot. Nombre del bot, nombre del usuario del bot(que debe terminar en …bot) y nos dará un token para poder acceder a él. Ahora solo nos vamos a manejar con esos datos.

Un vez que creamos un bot buscalo en telegram y mandale un mensaje: «Hola!» por ejemplo y luego a: https://api.telegram.org/bot<ACA VA TU TOKEN>/getUpdates

Te va a devolver un json de donde vas a sacar el id de chat. (Puede ser negativo[el número] copialo tal cual).

En el próximo código de shell vamos a usar: usuario, token, id de chat.

El Script

Vamos a escribir un script con los datos que acabamos de tomar

nano /usr/local/bin/telegram_nagios.sh

#!/bin/bash

BOT_TOKEN="<BOT-TOKEN>"
CHAT_ID="<GROUP-ID>"  # Asegúrate de incluir el signo negativo si está presente
MESSAGE="$1"

curl -s -X POST https://api.telegram.org/bot$BOT_TOKEN/sendMessage \
-d chat_id=$CHAT_ID \
-d text="$MESSAGE"

Con este script ya estamos en condiciones de hacer funcionar las alertas por telegram.

Nagios

Ahora a configurar Nagios. Primero creamos el comando en el archivo commands.cfg, para poder referenciarlo.

/usr/local/nagios/etc/objects/commands.cfg
#Servicios
define command {
command_name notify-service-by-telegram
command_line sh /usr/local/bin/telegram_nagios.sh "Service: $SERVICEDESC$ on $HOSTNAME$ is $SERVICESTATE$ - Info: $SERVICEOUTPUT$"
}
#host state
define command {
command_name notify-host-by-telegram
command_line sh /usr/local/bin/telegram_nagios.sh "Host: $HOSTNAME$ is $HOSTSTATE$ - Info: $HOSTOUTPUT$"
}

Una vez creados los comandos vamos a contactos y creamos uno nuevo cuyo alias será nuestro alias de telegram.(En este caso Jerexxx).

/usr/local/nagios/etc/objects/contacts.cfg
define contact {
   contact_name telegram-contact
   alias Jerexxx
   service_notification_commands notify-service-by-telegram
   host_notification_commands notify-host-by-telegram
   service_notification_period 24x7
   host_notification_period 24x7
   service_notification_options w,u,c,r
   host_notification_options d,u,r
}

Y modificamos también el contactgroup donde definimos el grupo que recibe las alertas:

contactgroup_name admins
   alias Administradores
   members soporte, telegram-contact
}

Luego reiniciamos nagios:

systemctl restart nagios

Ahora ya estaría todo funcional.

La idea de este script es más una prueba de concepto general. Si bien ahora Nagios te ofrece mensajería por telegram de cada caída de servicios o hosts es también una forma muy básica de interactuar con telegram de una forma nativa fácil de entender en su funcionamiento.

Si encontras una mejora o alguna implementación mejor por favor no dejes de escribirme.

Por Jeremías Palazzesi

Solucionador de Problemas Senior!. No podés con algo?, probá conmigo!

Deja una respuesta