Configurando Notificaciones de Centreon a Telegram

En este artículo veremos la forma de configurar centreon para notificarnos de sus eventos a Telegram.
Instalamos las dependencias necesarias

apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev python2.7-dev make git

Debemos instalar Jansson que es una biblioteca C para codificar, decodificar y manipular datos JSON
Descargamos e instalamos jansson

cd /usr/scr/
wget http://www.digip.org/jansson/releases/jansson-2.10.tar.gz
tar -zxf jansson-2.10.tar.gz
cd jansson
./configure --prefix=/usr/ && make clean && make && make install && ldconfig

Clonar el repositorio telegram-cli y compilarlo.

mkdir /usr/lib/nagios/plugins/telegram && cd /usr/lib/nagios/plugins/telegram
git-clone --recursive https://github.com/vysheng/tg && cd tg
./configure
make

Nos hace falta ahora instalar el cliente botapi y para eso es necesario de descargar e instalar get-pip.py para luego instalar botapi.

cd /usr/scr/
wget https://bootstrap.pypa.io/get-pip.py
python2.7 get-pip.py
pip2.7 install twx.botapi

Vamos ahora a registrar nuestro telegram desde consola

cd /usr/lib/nagios/plugins/telegram/tg
/bin/telegram-cli

Lo primero que nos pedirá es el telefono nuestro (Recuerde poner el código del pais antes con el signo +)

phone number: +5352xxxxxx

Recibiremos un código por sms o por telegram. Tu código de activación: xxxxx.

code ('CALL for phone code') xxxxx

Ahora podemos mandar un mensaje desde la consola de comandos un usuario cualquiera de telegram.

msg @pepe probando

Tomaremos el ID de nuestro usuario de telegram con get_self.

get_self
User mi_usuario @mi_usuario (#132554230):
        phone: 5352xxxxxx
        online (was online [2017/04/25 20:29:39])
quit

Tendremos en cuenta el ID de nuestro usuario de telegram para más adelante y por eso lo marcamos en negrilla.

Crearemos un  bot en telegram. Buscamos el BotFather y empezamos el procedimiento.

/start

/newbot

BotFather, [15.04.17 17:02]
Alright, a new bot. How are we going to call it? Please choose a name for your bot.

my_centreon_notification_bot

BotFather, [15.04.17 17:02]
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.

notification_bot

BotFather, [15.04.17 17:03]
Done! Congratulations on your new bot. You will find it at t.me/notification_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
373621504:AAEw0fs8zUbxI8EYbwSpKes-pKPdG0iWKHU

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

El Id del bot esta en negrilla antes de los dos puntos nos hara falta a la hora de crear el grupo y el token completo nos hará falta cuando implementemos el comando.

Ahora descargaremos el plugin que nos permite enviar los mensajes a telegram.

wget -O /usr/lib/nagios/plugins/nagios_telegram.py https://raw.githubusercontent.com/pommi/telegram_nagios/master/telegram_nagios.py
chmod 755 /usr/lib/nagios/plugins/nagios_telegram.py

Vamos ahora a crear el grupo, agregar el Id del  bot que creamos y el Id de nuestro usuario.

/bin/telegram-cli

create_group_chat notif_centreon_group user#373621504 user#132554230
chat_info notif_centreon_group
Chat notif_centreon_group updated members
Chat notif_centreon_group (id 197841789) members:
                my_centreon_notification_bot invited by Usuario 1 at [2017/04/15 17:15:28]
                Usuario 1 invited by user#0 at [1969/12/31 19:00:00]

Tomaremos el ID del grupo en cuenta para mas adelante crear el usuario de centreon que enviara las notificaciones.

Vamos a crear el comando de notificación en el centreon tanto para equipo como para servicios. Configuration/Commands/Notification.

Para equipos esta es la linea de comandos en la notificación que creamos. En el comando ponemos el  token del bot que nos dío a la hora de crearlo y que marcamos en negrilla

$USER1$/nagios_telegram.py –token 373621504:AAEw0fs8zUbxI8EYbwSpKes-pKPdG0iWKHU –object_type host –contact “$CONTACTPAGER$” –notificationtype “$NOTIFICATIONTYPE$” –hoststate “$HOSTSTATE$” –hostname “$HOSTNAME$” –hostaddress “$HOSTADDRESS$” –output “$HOSTOUTPUT$”

y para los servicios:

$USER1$/nagios_telegram.py –token 373621504:AAEw0fs8zUbxI8EYbwSpKes-pKPdG0iWKHU –object_type service –contact “$CONTACTPAGER$” –notificationtype “$NOTIFICATIONTYPE$” –servicestate “$SERVICESTATE$” –hostname “$HOSTNAME$” –servicedesc “$SERVICEDESC$” –output “$SERVICEOUTPUT$”

Vamos crear las notificaciones. Damos click en Add:


Para los host la vamos a llamar notify-host-by-telegram


Para los host la vamos a llamar notify-service-by-telegram


Ahora crearemos el usuarios que enviará estas notificaciones. Damos click en add.

En este caso crearemos el usuario User_Centreon_Telegram. Algo importante usaremos el Id del grupo que creamos 197841789 y lo pondremos en el atributo pager con el singo negativo -197841789. Lo asociamos al grupo de contactos supervisor, además tendremos que habilitar las notificaciones(Enabled Notifications), las opciones de notificación del equipo(Host Notification Options) y el periodo de notificacion(Host Notification Period) y seleccionamos el comando que creamos de notificacion para los equipos notify-host-by-telegram. Esto último se repite pero para los servicios pero usando el comando de notificacion notify-service-by-telegram.


Podemos ir a la plantillas tanto de equipos y de servicios habilitando las notificaciones para que cuando creemos un equipo o un servicio hereda los datos de la plantilla que le asociamos.

Lo asociamos al contacto en especifico User_Centreon_Telegram o al Grupo de este que es Supervisors.

Esportamos la configuración.


Cuando todo esta listo empezaremos a recibir las notificaciones.

1 Trackback / Pingback

  1. Sistema de monitoreo Centreon 2.8.x en Debian 8 | | Sysadmins de cuba

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*