Alertas por Telegram cuando tu servidor tiene problemas
Dedicados & VPS
2

Alertas por Telegram cuando tu servidor tiene problemas

El correo electrónico es muy bueno para muchas cosas, pero para alertas críticas se queda corto: puede caer en spam, puede llegar con diez minutos de retraso, y si estás lejos de la laptop simplemente no te vas a enterar. Telegram, en cambio, te pega un ping instantáneo en el celular, en la compu o en el reloj, y es gratis. Por eso cada vez más administradores migran sus alertas ahí.

Por qué Telegram gana al correo para alertas

  • Entrega instantánea: los mensajes llegan en segundos, sin depender de colas SMTP o reputación de IP.
  • Sin spam: los mensajes de un bot aprobado por ti nunca caen en una carpeta de no deseados.
  • Multidispositivo: recibís la alerta en todos tus aparatos simultáneamente.
  • Gratis y con API abierta: no hay plan de pago escondido.
  • Formato rich: podés enviar Markdown, negritas, enlaces y hasta emojis para distinguir niveles de severidad.

Crear un bot con BotFather

Abrí Telegram, buscá @BotFather, iniciá chat con él y escribí /newbot. Te pedirá un nombre y un username (debe terminar en "bot"). Cuando termines, te entrega un token parecido a 1234567890:AAEabc...defXYZ. Guardalo bien porque es la llave para mandar mensajes desde cualquier script.

Obtener tu chat_id

Un bot no puede escribirle a alguien si ese alguien no le habló primero. Abrí tu bot recién creado y mandale cualquier mensaje, por ejemplo "hola". Después, abrí en el navegador:

https://api.telegram.org/bot<TU_TOKEN>/getUpdates

Vas a ver un JSON. Buscá el campo "chat":{"id":123456789.... Ese número es tu chat_id personal. Si querés que las alertas lleguen a un grupo, agregá el bot al grupo y repetí el proceso: verás un chat_id negativo, eso es normal.

Script bash simple para enviar alertas

Con el token y el chat_id ya podés enviar mensajes. Un script mínimo sería así:

#!/bin/bash
TOKEN="1234567890:AAEabc...defXYZ"
CHAT_ID="123456789"
MENSAJE="$1"

curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
  -d chat_id="${CHAT_ID}" \
  -d parse_mode="Markdown" \
  -d text="${MENSAJE}" > /dev/null

Guardalo como /usr/local/bin/tg-alert, dale permisos con chmod +x y ya podés hacer tg-alert "Disco al 95 por ciento en web01" desde donde quieras.

Integración con monitoreo

La gracia del script es que lo podés llamar desde cualquier otra herramienta. Algunos casos prácticos:

  • Cron: un script que chequea el uso del disco cada 5 minutos y llama a tg-alert si supera cierto umbral.
  • Monit: en la directiva exec podés invocar el script cuando un servicio se reinicia.
  • Prometheus Alertmanager: aunque soporta Telegram nativo, también podés dispararle un webhook a un pequeño endpoint que ejecute el script.
  • Fail2ban: en el action del jail podés llamar a tg-alert cada vez que se banea una IP.
  • Backups: al terminar un backup nocturno, el script de respaldo manda un "Backup OK, 2.3 GB, 4 minutos".

Ejemplo: alerta de carga alta

#!/bin/bash
LOAD=$(cut -d' ' -f1 /proc/loadavg)
if (( $(echo "$LOAD > 4.0" | bc -l) )); then
  tg-alert "*ALERTA* carga alta en $(hostname): $LOAD"
fi

Lo agregás al crontab cada minuto y listo. Algo parecido podés hacer para disco, memoria, respuesta HTTP o cualquier otra cosa.

Buenas prácticas

Creá un grupo de Telegram dedicado a alertas para separarlo de los chats personales. Usá emojis como banderas rojas o verdes para que incluso en una mirada rápida sepas si es crítico o informativo. Y, muy importante, tu token es una credencial: nunca lo subas a un repositorio público.