telegram_graphs: notificaciones de Telegram con gráficos (Checkmk 2.4.0 Community/Raw)
Envía las notificaciones de Checkmk a un chat, grupo o canal de Telegram y adjunta, como álbum en respuesta al mensaje, los gráficos de rendimiento de las últimas 25 h del host o servicio notificado. También puede añadir los gráficos de otros servicios del mismo host (por ejemplo CPU, memoria o interfaces) cuando cae un host.
Está basado en telegram_notify 1.4.3 (el telegram.py del proyecto anterior) y portado a la API de Checkmk 2.4.
INSTALACIÓN
como usuario del sitio (OMD[mysite]:~$)
mkp add telegram_graphs-2.0.0.mkp
mkp enable telegram_graphs 2.0.0
omd restart apache # para que la GUI cargue el nuevo ruleset
En la edición Community también puede hacerse con Setup > Maintenance > Extension packages > Upload package.
Se instalan dos ficheros:
~/local/share/check_mk/notifications/telegram_graphs → Script de notificación
~/local/lib/python3/cmk_addons/plugins/telegram_graphs/rulesets/telegram_graphs.py → Parámetros en la GUI (Rulesets API cmk.rulesets.v1)
CONFIGURACIÓN
Cree un bot con @BotFather y guarde el token. Lo ideal es guardarlo en Setup > General > Passwords.
Añada el bot al grupo o canal y obtenga el chat ID (en grupos es un número negativo, como -1001234567890).
En Setup > Events > Notifications, cree una regla o Notification parameter con el método Telegram (con gráficos).
Parámetros disponibles:
Token del bot: Obligatorio. Puede ser explícito o venir del almacén de contraseñas.
ID del chat: Si se deja vacío, se usa el atributo de usuario TELEGRAM_CHAT_ID del contacto, igual que en el plugin anterior.
ID del tema: Para supergrupos con temas (message_thread_id).
Envío silencioso: El texto llega sin sonido. Los gráficos llegan siempre en silencio.
URL prefix: Activa los enlaces $LINKEDHOSTNAME$, $LINKEDSERVICEDESC$ y $GRAPH_URL$.
Plantillas host/servicio: HTML de Telegram con macros de Checkmk, con la misma plantilla por defecto que el plugin anterior.
Enviar gráficos: Activado por defecto.
Estados con gráficos: Por separado para servicios (OK/WARN/CRIT/UNKNOWN) y hosts (UP/DOWN/UNREACHABLE).
Máximo de gráficos: 10 por defecto. Si son más de 10 se envían varios álbumes.
Servicios adicionales: Expresiones regulares (CPU, Memory, Interface .*...) de servicios del mismo host con métricas. Se buscan por Livestatus.
Adjuntar servicios adicionales en: Notificaciones de host (por defecto), de servicio o ambas.
Proxy: Proxy HTTP para llegar a api.telegram.org.
CÓMO OBTIENE LOS GRÁFICOS
El script usa cmk.notification_plugins.utils.render_cmk_graphs, el mismo mecanismo que el correo HTML de Checkmk. Llama a "http://localhost://check\_mk/ajax\_graph\_images.py" autenticándose con el site internal secret, que es obligatorio desde la 2.3. No hay que crear usuarios de automatización. Checkmk fija el rango de los gráficos en 25 h para las notificaciones.
DIFERENCIAS CON telegram_notify 1.4.3
La GUI usa la Rulesets API de 2.4. La antigua cmk.gui.plugins.wato / notification_parameter_registry ya no existe en 2.4.
Ya no depende de cmk.utils.site ni de mail.event_templates, que también desaparecieron en 2.4.
Las peticiones de gráficos van autenticadas, porque sin token ajax_graph_images.py responde vacío o con error.
Primero se envía el texto, que es el que suena, y los gráficos van después como respuesta. Si fallan los gráficos, la notificación no se reintenta, así el texto no llega duplicado.
Los códigos de salida siguen la convención de Checkmk: 0 enviado, 1 reintentar (429/5xx/red), 2 error definitivo.
Las salidas del plugin se escapan (<, >, &) para que Telegram no rechace el mensaje con un 400.
Es un paquete nuevo (telegram_graphs) que convive con el anterior. Las reglas antiguas de telegram.py no se migran.
DIAGNÓSTICO
Log: ~/var/log/notify.log. Suba el nivel en Global settings > Notifications > Notification log level.
Para probarlo, use Test notifications en Setup > Events > Notifications, o pulse Send custom notification en un servicio con gráficos.