Para entornos en los que necesitemos estar al tanto de inmediato si existe algún problema, como entornos de producción, seguridad o recursos críticos de nuestra compañía, esta integración de Pandora FMS con Telegram es perfecta, ya que responde a esa inmediatez requerida, así como la posibilidad de ofrecer información precisa sobre la localización y causa del problema, gracias al potente sistema de alertas y macros de Pandora.

Del mismo modo, al ser un servicio de mensajería basado en las comunicaciones telefónicas a través de la red de datos, permite que nuestros técnicos, responsables y operadores de guardia, cuenten con la garantía de saber en el momento exacto en el que aparece un problema, sin necesidad de acceder a un ordenador o consultar manualmente el correo electrónico.

Gracias a los plugins de nuestra librería y al flexible sistema de alertas que ofrece Pandora FMS, vamos a enseñaros cómo configurar nuestra herramienta de monitorización para enviar mensajes instantáneos en el momento en que un problema es detectado.

En primer lugar, debemos partir del entorno necesario, cuyos requisitos son:

  • Entorno de Pandora FMS corriendo sobre Linux, en este caso usaremos Rocky Linux 8, la distribución recomendada por el fabricante.
  • El plugin de nuestra librería: Telegram bot CLI.
  • Cuenta de Telegram disponible para ser utilizada como emisora de los mensajes de alerta.

Creación del bot

Lo primero de todo será crear el bot de Telegram que se encargará de mandarnos los mensajes. Desde la cuenta de Telegram que queramos utilizar, interactuaremos con el usuario BotFather mediante el comando “/start”:

Utilizaremos el comando “/newbot” para crear nuestro bot.

Nos pedirá el nombre que queremos que tenga nuestro bot. Especificamos el nombre que queremos que tenga nuestro bot. Es importante que el nombre termine con “bot”, por ejemplo Pandora_FMS_telegram_bot.

Al enviarle el nombre, si no está en uso, nos confirmará que se ha creado el bot, con un enlace a su chat y nos dará un Token que es importante que guardemos para configurar la alerta más adelante.

Configuración del grupo

Ahora meteremos el bot que acabamos de generar en un grupo que tengamos o uno nuevo que creemos, para recibir nuestras alertas.

El siguiente paso es agregar otro bot llamado GetIDs Bot al mismo grupo con el fin de obtener el identificador de grupo. Al añadirlo, nos dejará en un mensaje el ID de nuestro grupo, lo apuntaremos también para más adelante.

Con todo esto ya tendremos preparado nuestro Telegram para recibir las alertas.

Integración con Pandora FMS (versión 773 y anteriores)

Comenzaremos descargando nuestro plugin Telegram bot CLI.

Nos descargará un archivo ZIP llamado telegram-bot-cli.zip, que debemos descomprimir. Dentro encontraremos un archivo llamado “pandora-telegram-cli.py” el cual meteremos en nuestro servidor de Pandora FMS en la ruta “/usr/share/pandora_server/util/plugin”.

Ahora, desde la terminal de nuestro servidor, instalaremos las dependencias de Python3 (si no las tenemos ya) con el comando “dnf install python3”:

Una vez instalado, ejecutaremos el plugin para comprobar que se ejecuta, con el comando “python /usr/share/pandora_server/util/plugin/pandora-telegram-cli.py”:

Ahora pasaremos a la consola de nuestro servidor de Pandora FMS.
Accederemos a la sección “Management > Alerts > Commands” y le daremos al botón “Create”:

Y configuraremos nuestro comando de alerta de la siguiente manera:

En comando escribir:

python3
/usr/share/pandora_server/util/plugin/pandora-telegram-cli.py -t _field1_ -c _field2_ -m “_field3_”

El comando que utilizaremos es el de ejecución del plugin que hemos descargado, con los argumentos -t, -c y -m. Es importante que el argumento -m vaya entrecomillado “”.

  • En el campo del argumento -t, Bot Token, meteremos el token de nuestro bot.
  • En el campo del argumento -c, Chat ID, meteremos el ID de nuestro grupo que nos brindó el bot “GetIDs Bot”.
  • Y en el campo -m, Alert Message, introduciremos el mensaje de alertado que queremos que nos mande nuestro bot al grupo. Podemos utilizar todas las macro de alerta que necesitemos, algunos ejemplos son:
    • _module_: nombre del módulo que disparó la alerta.
    • _agentalias_: alias del agente que disparó la alerta.
    • _modulestatus_: estado del módulo cuando se disparó la alerta.
    • _agentstatus_: estado del agente cuando se disparó la alerta.
    • _data_: dato del módulo que disparó la alerta.
    • _timestamp_: Hora y fecha en que se disparó la alerta.

Por ejemplo podríamos usar este mensaje (que pondremos en el campo 3): “The module _module_ of agent _agentalias_ has changed to _modulestatus_ status”

.

Una vez relleno todo esto, le daremos al botón “Create”.

Ahora accederemos a la sección “Management > Alerts > Actions” de nuestra consola de Pandora FMS y le daremos al botón de “Create” para crear nuestra acción.

Pondremos el nombre que queramos que tenga nuestra acción, seleccionamos el grupo, el comando de alerta que hemos creado anteriormente y elegiremos un Threshold. Se rellenarán todos los campos automáticamente y hacemos clic a “Create”:

Ahora accederemos al apartado “Management > Alerts > List of Alerts” y configuraremos la alerta para el Agente y Módulo que queramos.

En nuestro caso hemos seleccionado que cuando el Módulo “Host Alive” del agente “Router” pase ha estado crítico, ejecute nuestra acción creada previamente “Telegram Message”:

Si nuestro módulo pasara ha estado crítico, recibiremos este mensaje a nuestro grupo de Telegram:

Cuando nuestra alerta se recupere recibiremos un mensaje como este:

Integración con Pandora FMS (versión 774 y posteriores)

En la versión v7.0NG.774 se ha introducido por defecto en el alertado de Pandora FMS el plugin de Telegram de nuestra librería, con una configuración básica de serie.

Si accedemos al apartado de Management > Alerts > Comands, dispondremos de un comando llamado “Pandora Telegram”:

Al acceder a él, veremos que viene configurado ya el comando que ejecutará nuestra alerta. Rellenaremos el parámetro -t “TOKEN” del comando con el token que nos ha dado el BotFather y guardaremos el comando:

Tras esto, accederemos al apartado Management > Alerts > Actions y accederemos a la acción Pandora Telegram.
En La parte inferior, añadiremos el Chat ID de nuestro grupo que nos dio el bot “GetIDs Bot” en los apartados Triggering y Recovery, podemos modificar el mensaje a nuestro gusto utilizando las macro de alerta como hemos visto anteriormente y haremos clic en “Update”:

Una vez guardado, entraremos al menú de Lista de alertas desde Management > Alerts > List of Alerts y crearemos una nueva alerta.
Seleccionaremos el agente y módulo, la acción que hemos actualizado “Pandora Telegram”, la plantilla que queramos y creamos la alerta:

Una vez se dispare nuestra alerta, recibiremos nuestro mensaje por Telegram:

Envío de alertas con gráficas de datos

En nuestra integración del alertado de Pandora FMS y Telegram, podemos añadir al mensaje una gráfica con los últimos datos del módulo que disparó la alerta, esto se aplica tanto para la versión 773 y anteriores y para 774 y posteriores. Conseguiremos mandar gráficas en nuestras alertas añadiendo una llamada a la API de nuestro servidor de Pandora FMS al script que hemos utilizado anteriormente.

El primer paso que deberemos configurar en nuestro servidor, es el acceso a la API de Pandora FMS en el apartado “Setup > Setup > General Setup”, en el campo “API password” tendremos la contraseña de la API y en “IP list with API access” pondremos las IP que necesiten tener acceso o podremos brindar acceso a cualquier IP (*).

Ahora editaremos el comando que habíamos creado previamente para añadir los datos necesarios para mandar la gráfica. Necesitamos añadir los siguientes parámetros:

  • –api_conf: aquí indicaremos los parámetros de configuración de la API de nuestro servidor, es importante rellenar los campos “ < >”:
    “user=,pass=,api_pass=,api_url=http:///pandora_console/include/api.php”.
    Ejemplo: “user=admin,pass=pandora,api_pass=1234,api_url=http://10.0.5.100/pandora_console/include/api.php”
  • –module_graph: parámetros del módulo del que extraeremos la gráfica, en este caso tenemos dos:
    • module_id: donde se introduce el ID del módulo que disparó la alerta. En este caso utilizaremos la macro de alerta _id_module_ para que se rellene siempre con el ID del módulo de la alerta.
    • interval: intervalo de tiempo total mostrado en la gráfica, en segundos. Nosotros utilizaremos por defecto 3600 segundos, el equivalente a 60 minutos o 1 hora pero se puede configurar en el intervalo que convenga.

El comando completo resultante será el siguiente:

Comando:

Y la configuración de los campos:

Y guardamos los cambios.

Al dispararse la alerta recibiremos el mensaje con la gráfica de datos de nuestro módulo:

Shares