Cómo enviar alertas de Zabbix a Telegram y saber que algo falla antes de que tus usuarios te avisen

Tener un sistema de monitoreo y no recibir alertas es como instalar una alarma contra incendios y dejarla guardada en una caja fuerte.

Funciona perfecto. Hace ruido. Tiene luces. Tiene datos.

El pequeño detalle es que cuando algo se quema, nadie se entera.

Zabbix es excelente recopilando métricas, generando eventos y mostrando información de la infraestructura, pero toda esa información pierde valor si termina abandonada en un dashboard que alguien revisa “cuando tenga tiempo”.

Y todos sabemos cómo termina esa historia.

El servidor empieza a tener problemas a las 03:00 AM, Zabbix genera 200 eventos, los gráficos quedan hermosos mostrando cómo todo se fue al infierno lentamente… y a las 09:00 alguien pregunta:

“¿Alguien sabía que estaba caído?”

Sí. Zabbix sabía.

El problema es que nadie estaba mirando.

Por eso una de las primeras integraciones que normalmente se implementan en una plataforma de monitoreo es un canal de alertas efectivo.

En este caso utilizaremos Telegram.

¿Por qué Telegram?

Porque funciona, es rápido, está disponible prácticamente en cualquier teléfono y no requiere montar otra plataforma completa solamente para enviar un mensaje diciendo:

“El disco /var tiene 95% de uso”.

Esta guía explica cómo integrar Zabbix con Telegram utilizando el webhook oficial, permitiendo enviar alertas de problemas, recuperaciones y eventos importantes directamente a un chat personal o grupo.


"Ok, basta de cháchara, como decía mi abuela: dos cucharadas y a la papa. Vamos al grano."

¿Qué vamos a configurar?

La gracia de esta integración es mantenerla simple:

Zabbix detecta un problema
→ dispara la acción correspondiente
→ el webhook envía la alerta a la API de Telegram
→ el bot entrega el mensaje al chat configurado

Sin inventar otra infraestructura paralela, sin servidores adicionales y sin crear otro problema que después tengamos que monitorear. Porque bastante tenemos ya con los problemas reales. 😄


Requisitos previos

Necesitamos:

  • Zabbix 5.0 o superior.
  • Recomendado: Zabbix 7.4.
  • Una cuenta activa de Telegram.
  • Acceso administrativo a la interfaz web de Zabbix.
  • Acceso al servidor Zabbix para realizar pruebas.
  • Conectividad HTTPS desde Zabbix hacia Internet.
  • Café, no se olviden del café.

El servidor Zabbix debe poder comunicarse con:

https://api.telegram.org

Fase 1: Configuración en Telegram

Primero necesitamos crear el bot que funcionará como intermediario entre Zabbix y Telegram.

Es simplemente una cuenta automatizada con acceso mediante API.

Requisito: Debes tener tu telefono/cuenta registrada en Telegram, con ese usuario vamos a hacer los pasos siguientes.


1.1 Crear un nuevo bot con BotFather

Telegram utiliza un bot especial llamado BotFather para crear y administrar bots.

  1. Abre Telegram. (idealmente en un PC, anda a https://web.telegram.org/ )

  2. Busca:

    @BotFather
  1. Inicia una conversación.

  2. Ejecuta:

    /newbot

BotFather solicitará dos datos:

Nombre visible del bot:

Ejemplo:

    OrangeBox Monitoreo

Nombre de usuario:

Debe ser único y terminar en:

    bot

Ejemplo:

    OrangeBox_Zabbix_bot

Al finalizar, BotFather entregará un token similar a:

    1234567890:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Guarda este token.

Importante:

Este token es una credencial de acceso a la API del bot.

No lo publiques. No lo subas a Git. No lo dejes en capturas de pantalla.

Si alguien obtiene ese token puede utilizar tu bot para enviar mensajes.


1.2 Obtener el Chat ID

Zabbix necesita saber dónde enviar las alertas.

Telegram identifica cada destino mediante un número llamado Chat ID.

Chat personal

Para obtener tu Chat ID personal:

  1. Abre Telegram.
  2. Busca:
    @myidbot
  1. Ejecuta:
    /getid

El bot responderá con un número similar a:

    123456789

Luego debes iniciar conversación con tu bot:

Ejemplo:

    @OrangeBox_Zabbix_bot

Envía:

    /start

Esto es necesario porque Telegram no permite que un bot envíe mensajes privados a un usuario que nunca inició conversación con él.


Grupo de Telegram

Para enviar alertas a un grupo:

  1. Crea o utiliza el grupo donde recibirás las alertas.

  2. Agrega:

    @myidbot

y agrega también:

    @OrangeBox_Zabbix_bot
  1. Dentro del grupo ejecuta:
    /getgroupid@myidbot

Obtendrás un identificador similar a:

    -5151681762

Los grupos utilizan números negativos.

Luego ejecuta:

    /start@OrangeBox_Zabbix_bot

Con esto Telegram permitirá que el bot interactúe con el grupo.


Fase 2: Configuración en Zabbix

Ahora viene la parte donde Zabbix deja de mirar silenciosamente los problemas y empieza a avisarnos.

Un monitoreo que solamente acumula datos y gráficos bonitos es básicamente un Excel con esteroides.

Vamos a configurar:

  • El Media Type de Telegram.
  • El usuario que recibirá las alertas.
  • Las acciones que dispararán los mensajes.

2.1 Importar o verificar el Media Type de Telegram

Zabbix incluye un webhook oficial para Telegram.

Primero debemos verificar que exista.

En la interfaz web de Zabbix:

Ir a:

    Alerts → Media types // Alertas → Tipos de medios

Buscar:

Telegram

Si no existe:

  1. Descargar el Media Type oficial desde el repositorio de Zabbix.
  2. Importar el archivo YAML.
  3. Guardar la configuración.

El Media Type es el componente encargado de tomar la información del evento generado por Zabbix y enviarla mediante la API de Telegram.


2.2 Configurar los parámetros del Webhook

Abrir el Media Type:

    Telegram

Clónalo o cópialo, no edites la plantilla que viene por defecto (porque normalmente vas a tener varios grupos a los que mandar distintas alertas, por grupos de Hosts, severidad de la alerta, escalado, etc.)

Configura los siguientes parámetros:

    api_token

Valor:

    TOKEN_ENTREGADO_POR_BOTFATHER

Este es el token generado cuando creamos el bot.

Ejemplo:

    1234567890:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Configurar también:

    api_parse_mode

Valor recomendado:

    html

Esto permite que los mensajes enviados por Zabbix utilicen formato HTML.

Por ejemplo:

- Negritas.
- Separación de secciones.
- Mejor lectura en dispositivos móviles.

El parámetro:

    api_chat_id

Debe mantenerse como:

    {ALERT.SENDTO}

No debemos escribir aquí el Chat ID.

Zabbix lo reemplazará automáticamente usando el valor configurado en el usuario.


Importante:

No modificar otros parámetros del webhook.

Campos como:

    event_source
    event_value
    event_update_status
    event_nseverity

son utilizados internamente por Zabbix.

Si empiezas a modificar cosas sin saber qué hacen, Zabbix tiene una habilidad especial para parecer que todo está bien hasta que llega el primer incendio.


2.3 Activar el Media Type

En la parte superior del Media Type:

Marcar:

    Enabled

Guardar los cambios:

    Update

Con esto Telegram queda disponible como método de envío.


2.4 Probar la conexión con Telegram

Antes de configurar usuarios y acciones conviene validar que el servidor Zabbix puede comunicarse con Telegram.

Desde el servidor Zabbix ejecutar:

    curl "https://api.telegram.org/botTOKEN_AQUI/getMe"

Reemplazar:

    TOKEN_AQUI

por el token real entregado por BotFather.

Una respuesta correcta debería incluir:

    "ok":true

y la información del bot creado.

Ejemplo:

    {
      "ok": true,
      "result": {
        "id": 1234567890,
        "is_bot": true,
        "first_name": "OrangeBox Monitoreo"
      }
    }

Si falla:

  • Revisar salida a Internet.
  • Revisar DNS.
  • Revisar proxy si existe.
  • Revisar que el token sea correcto.

Antes de revisar Zabbix durante una hora, confirmar que simplemente puedes llegar a Telegram.

A veces el problema no está en el monitoreo.

Está en que el servidor no puede salir ni a comprar pan.


2.5 Configurar el usuario de Zabbix

Ahora debemos indicarle a Zabbix quién recibirá las alertas.

Si las alertas van a un grupo de Telegram, no hay que llenar Zabbix de usuarios con el mismo Chat ID como si fuera una lista de asistencia.

basta con que un usuario de Zabbix (por ejemplo Admin) tenga configurado el medio Telegram apuntando al grupo. Después, quienes necesiten ver las alertas se agregan directamente al grupo de Telegram.

Zabbix manda el mensaje una vez al grupo y Telegram se encarga de repartirlo a los integrantes.

Ir a:

    Users // Usuarios

o:

    Administration → Users 

Seleccionar el usuario que recibirá las notificaciones.

Ejemplo:

    Admin

Ir a la pestaña:

    Media

Seleccionar:

    Add

Configurar:

Campo Valor
Type Telegram
Send to Chat ID obtenido anteriormente
When active 1-7,00:00-24:00
Use if severity All
Status Enabled

Ejemplo para grupo (los ID de grupo tienen un número negativo):

    -5151681762

Ejemplo para usuario:

    123456789

Guardar:

    Add

y luego:

    Update

Ahora Zabbix sabe dónde enviar las alertas para ese grupo o usuario.


Fase 3: Crear la acción de alertas

Tener Telegram configurado no significa que Zabbix vaya a enviar mensajes mágicamente.

Todavía debemos decirle:

“Cuando ocurra un problema, avisa por aquí”.

Esto se realiza mediante las Actions.


3.1 Crear una nueva acción

Ir a:

    Alerts → Actions → Trigger actions // Alertas → Acciones → Acciones de Iniciador

Seleccionar:

    Create action

En la pestaña:

    Action

Configurar:

Nombre:

Ejemplo:

    Alertas por Telegram

Condiciones:

Aquí depende del diseño de monitoreo.

Puedes dejarlo vacío para recibir todos los eventos.

O agregar filtros:

Ejemplo:

  • Solo servidores críticos.
  • Solo ciertos grupos.
  • Solo problemas con severidad Warning o superior.

Para comenzar, dejarlo sin condiciones ayuda a validar que todo funciona.

Activar:

    Enabled

3.2 Configurar operaciones

Abre la “acción” que acabas de crear y anda a la pestaña:

    Operations

En:

    Default operations

Seleccionar:

    Add

Configurar:

Campo Valor
Operation type Send message to users
Users Usuario configurado anteriormente
Send only to Telegram

También puedes enviar a grupos:

    Send message to user groups

y seleccionar:

    Zabbix administrators

Guardar:

    Add

3.3 Configurar mensajes de recuperación

Las alertas importantes no solamente deben avisar cuando algo falla.

También deben avisar cuando vuelve.

Porque recibir:

"Servidor caído"

a las 03:00am y nunca saber si volvió es una experiencia maravillosa, Especialmente cuando al día siguiente tu reloj Garmin decide hacerte bullying y recordarte que ni dormir te sale bien.

Debajo de la operación que acabamos de crear está la sección:

    Recovery operations

Agregar la misma operación:

    Send message to users

Seleccionar:

    Telegram

Guardar.

Ahora tendremos:

PROBLEM:

🔴 Servidor caído

RECOVERY:

🟢 Servidor recuperado

3.4 Guardar la acción

Finalmente:

    Add

La acción queda creada.

A partir de ahora, cualquier evento que coincida con las condiciones configuradas será enviado por Telegram.


Fase 4: Verificación y pruebas

Una integración de alertas no está terminada porque el botón de guardar funcionó.

Está terminada cuando un problema real genera una alerta, llega al destino correcto y además avisa cuando el problema desaparece.


4.1 Probar el envío de alertas

Antes de dar por terminada la configuración, es recomendable generar una alerta real para comprobar que todo funciona correctamente:

Zabbix 7.4 no permite cambiar manualmente el estado de un trigger normal a PROBLEM, por lo que debemos provocar una condición real que active una alerta.

Opción 1: Detener temporalmente el agente Zabbix

Si tienes un host de laboratorio o un servidor donde puedas hacer una prueba controlada:

Detén el agente:

    systemctl stop zabbix-agent

o:

    systemctl stop zabbix-agent2

Después de unos minutos, Zabbix debería detectar que el host dejó de responder y generar una alerta.

Cuando termines la prueba, vuelve a iniciar el servicio:

    systemctl start zabbix-agent

o:

    systemctl start zabbix-agent2

Opción 2: Generar una alerta de espacio en disco

Otra alternativa es utilizar un filesystem monitoreado y provocar temporalmente un consumo de espacio.

No pasa nada, a menos que actualices el kernel o el grub, ningún archivo en /boot se va a ver afectado, pero recuerda borrar este archivo después de la prueba.

Por ejemplo, si /boot está monitoreado:

    dd if=/dev/zero of=/boot/test-alerta.img bs=1M count=500

o más simple (mismo resultado):

    cat /dev/zero > /boot/test-alerta.img

Espera a que Zabbix actualice la métrica y genere el evento de espacio disponible bajo.

Después elimina el archivo:

    rm -f /boot/test-alerta.img

y espera la recuperación automática del trigger.


Revisar el resultado en Zabbix

Después de generar la condición:

  1. vamos a:
    Monitorización → Problemas // o al Dashboard general
  1. Verifica que el evento aparezca como PROBLEM.

  2. Revisa:

    Informes → Registro de acciones

Ahí puedes confirmar si la acción fue ejecutada correctamente:

  • Sent: Zabbix envió la notificación correctamente.
  • Failed: El envío falló. Revisa el detalle del error.

Finalmente confirma que la alerta llegó al chat de Telegram configurado.

Una vez que confirmes que las alertas funcionan, elimina cualquier archivo de prueba o vuelve a dejar los servicios del agente zabbix en su estado original.


4.2 Revisar el Action Log

Después de generar el evento debemos verificar que Zabbix intentó enviar el mensaje.

Ir a:

    Reports → Action log

Buscar la acción creada anteriormente:

    Alertas por Telegram

Aquí veremos el resultado del envío.

Estados comunes:

Sent

Significa que Zabbix entregó correctamente el mensaje al Media Type.

La comunicación entre Zabbix y Telegram funcionó.


Failed

El envío falló.

En ese caso revisar el detalle del error.

Los problemas más comunes son:

  • Token incorrecto.
  • Chat ID incorrecto.
  • Bot sin permisos en el grupo.
  • Falta de conectividad desde el servidor Zabbix.
  • Error en la configuración del webhook.

4.3 Verificar recepción en Telegram

Si todo está correcto, deberías recibir un mensaje similar a:

    Problem started

    Host:
    servidor-web01

    Problem:
    High CPU utilization

    Severity:
    Warning

Y cuando la condición vuelva a la normalidad:

    Problem resolved

    Host:
    servidor-web01

    Recovery time:
    10:45:22

La información exacta dependerá de la plantilla y del mensaje configurado en Zabbix.


Resolución de problemas comunes

Error: “No media defined for user”

Causa:

El usuario de Zabbix no tiene configurado ningún medio de Telegram.

Solución:

Ir a:

    Users → Usuario → Media

Agregar:

    Type:
    Telegram

Configurar:

    Send to:
    Chat ID

Guardar los cambios.


Error: “Unauthorized” al probar el token

Causa:

El token entregado por BotFather no es válido.

Puede ocurrir porque:

  • Está mal copiado.
  • Fue revocado.
  • El bot fue eliminado.

Solución:

Anda a telegram y busca el chat con el BotFather:

    @BotFather

Envía el mensaje:

    /mybots

Selecciona el bot:

    API Token

Generar un nuevo token.

Actualizar el Media Type en Zabbix con el token nuevo.


No aparece ningún intento en Action Log

Causa:

La acción nunca fue ejecutada.

Revisar:

  • La acción está habilitada.
  • Las condiciones coinciden con el evento.
  • El trigger realmente cambió a PROBLEM.
  • El usuario tiene configurado Telegram.

Para descartar problemas, temporalmente se puede dejar la acción sin condiciones.


Action Log muestra “Sent”, pero no llega nada a Telegram

Causa:

Zabbix entregó el mensaje al webhook, pero Telegram no pudo entregarlo.

Revisar:

  1. Que el Chat ID sea correcto.

  2. Que el bot haya iniciado conversación.

Para chat privado:

    /start

Para grupo:

    /start@NombreDelBot
  1. Que el bot siga siendo miembro del grupo.

El servidor Zabbix no tiene salida a Internet

Causa:

El servidor no puede comunicarse con:

    api.telegram.org

Probar desde el servidor Zabbix:

    curl "https://api.telegram.org/botTOKEN/getMe"

Si falla:

Revisar:

  • Resolución DNS.
  • Firewall.
  • Proxy HTTP/HTTPS.
  • Reglas de salida.

Notas finales

Algunos detalles importantes:

  • El bot no necesita responder comandos constantemente para funcionar.
  • Solo es necesario iniciar conversación una vez para permitir el envío de mensajes.
  • Un mismo bot puede enviar alertas a múltiples chats.
  • Puedes crear diferentes usuarios de Zabbix con diferentes Chat ID.
  • Puedes crear múltiples acciones para separar alertas críticas, advertencias o sistemas específicos.

Por ejemplo:

Servidor crítico:

    Telegram grupo operaciones

Aplicaciones:

    Telegram equipo desarrollo

Alertas menores:

    Correo electrónico

La idea no es mandar absolutamente todo, Porque en la práctica terminas creando otro grupo de Telegram que todos silencian, igual que el cuento de Pedrito y el lobo. Las primeras alertas generan preocupación, las siguientes 50 generan molestia y después de la alerta número 100 nadie le da pelota. El día que realmente pase algo grave, el mensaje queda perdido entre “CPU alta”, “disco al 90%” y otras 200 notificaciones que nadie leyó.

El objetivo es recibir información útil cuando realmente importa.


Automatiza tu monitoreo antes de que el problema llegue al usuario

Implementar monitoreo correctamente no consiste solamente en instalar el servidor y esperar que aparezcan gráficos.

La parte importante está en definir qué medir, cómo detectar problemas y cómo hacer que la información llegue a las personas correctas antes de que alguien reporte:

“El sistema está lento desde hace una hora”.

En OrangeBox trabajamos con implementaciones de monitoreo, automatización y observabilidad para infraestructura Linux, VMware, Zabbix y servicios críticos.

Ayudamos con:

  • Implementación y configuración de Zabbix.
  • Creación de templates personalizados.
  • Integración de alertas con Telegram, correo y otras plataformas.
  • Automatización de tareas operativas.
  • Dashboards orientados a operación real.

Porque un buen monitoreo no es tener más gráficos.

Es enterarse del problema antes de que llegue el primer ticket.

¿Necesitas ordenar tu monitoreo?

Revisa nuestros servicios:


Referencias

Documentación oficial de Zabbix - Telegram webhook:

https://www.zabbix.com/integrations/telegram

Telegram Bot API:

https://core.telegram.org/bots/api