Zabbix no es simplemente un sistema de monitoreo versátil y flexible, sino también una herramienta conveniente para generar alertas y comunicarse con service desks que ya existen. Entre los distintos métodos de integración, webhooks se han vuelto los más populares. En este texto, vamos a ver qué son webhooks, cómo se los utiliza para integrar Zabbix con soluciones externas y veremos ejemplos de uso para esas integraciones.
¿Vamos?
¿Qué es un webhook?
Hablando de forma generalizada, un webhook es un método de aumentar o alterar el comportamiento de una página o aplicación web con un retorno personalizado.
De forma simplificada, un webhook es una reacción automática a un evento. Si un evento ocurre (por ejemplo, aparece un problema), el webhook llama (vía HTTP/HTTPS) a un servicio de terceros, para notificarlos sobre el evento.
Muchas de las soluciones que ya existen ofrecen una API que les permite comunicarse con otras a través de webhooks.
El webhook se implementa en Zabbix usando JavaScript, por lo que escribir el código no requiere ningún conocimiento específico de sintaxis del Zabbix, y debido a la predominancia del lenguaje JavaScript, puedes encontrar muchos ejemplos, tips, y guías en internet y en la Comunidad Zabbix de forma general.
¿Cómo funciona un webhook?
En síntesis, un webhook es un código que realiza una secuencia de llamadas para llegar a un resultado. En el caso de Zabbix, un código en JavaScript se ejecuta para acceder al servicio de API y transferir, actualizar, y recopilar los datos.
Por ejemplo, nosotros necesitamos abrir un ticket en el service desk y dejar un comentario en el ticket con informaciones sobre el problema. Para ello necesitamos:
- Loguearnos en el servicio y obtener un token;
- Hacer una request con el token para crear un ticket;
- Crear un comentario en el ticket recién creado utilizando un token.
En diferentes servicios, los detalles pueden ser diferentes, pero la idea general se mantiene de un servicio a otro.
¿Cómo se usa?
Nuestro equipo de Integración está constantemente en contacto con la comunidad y monitorea los servicios más populares para desarrollar integraciones oficiales out-of-the-box. En este momento, Zabbix ofrece una vasta selección de webhooks en esa modalidad para los servicios más populares, y nosotros los revisamos uno por uno y los mejoramos todos los días.
En la mayoría de los casos, configurar un webhook listo para usar toma entre 3-4 pasos, que se describen en el archivo README en el repositorio da Zabbix. Generalmente es necesario generar una llave de API en el servicio, definirla en Zabbix, definir la URL para el endpoint del servicio, y especificar algunos parámetros que son necesarios para que el webhook funcione.
Además de las soluciones ya listas, existe un repositorio de la comunidad en Github donde es posible encontrar templates y webhooks personalizados. Si eres el autor de algún webhook o template, ¡por favor compártelo con la comunidad en este repositorio!
Ejemplo – webhook de Telegram
La teoría es buena, pero a todos nos interesa saber cómo implementarlo en la práctica. Veamos los webhooks de Telegram como un ejemplo.
En primer lugar, vamos al repositorio de Zabbix o navegamos en el sitio de Zabbix hasta la sesión de integraciones Zabbix para leer las instrucciones de setup. En el repositorio, todos los templates y métodos de notificación están localizados en la carpeta /templates, y para cada uno existe un archivo README con su descripción detallada.
Del lado del Telegram, necesitamos crear un bot y obtener el token, siguiendo las instrucciones y definiendo el parámetro Token.
Luego creamos un usuario, definimos el tipo de archivo Telegram para el usuario y, en el campo “Enviar para”, escribimos la id del usuario o grupo de chat.
¡Listo! ¡Tu webhook está definido y listo para enviar notificaciones o informaciones de eventos para Telegram!
Como pudieron notar, el setup no tardó mucho tiempo y no exige ningún conocimiento profundo. Naturalmente, para un ajuste más fino, sería posible editar el contenido de los mensajes, el tipo de problemas, intervalos, y otros parámetros.
Pero incluso sin alterar nada más, las notificaciones ya están listas.
¿Es difícil escribir un webhook uno mismo?
Claro, crear un webhook requiere un cierto nivel de habilidad.
En primer lugar, es necesario conocer JavaScript. El lenguaje en sí no es muy difícil y puede ser dominado relativamente rápido. El sitio de los Documentos de Zabbix tiene una guideline para escribir webhooks con recomendaciones y mejores prácticas.
En segundo lugar, debes entender cómo Zabbix funciona. Esto no requiere un entendimiento muy profundo sobre Zabbix, y la posibilidad de seguir instrucciones básicas es suficiente. Puedes leer más sobre definir métodos de notificación en los documentos oficiales. Es importante configurar el webhook de forma apropiada, conceder permisos para usuarios, y definir una acción de notificación para las triggers necesarias.
Y en tercer lugar, estudia los documentos del servicio para el que el webhook será escrito. A pesar de que todas las API tengan el mismo principio, pueden ser muy diferentes entre sí con respecto a su estructura de métodos y requests. También es necesario entender el propio servicio para entender cómo funciona. Es difícil escribir una integración si no queda claro cómo Zabbix debe interactuar de forma apropiada con el servicio que está siendo integrado.
En resumen…
Webhook es una forma moderna y flexible de integración que permite que Zabbix sea una solución universal. Como las realidades nuestro mundo implican un gran número de sistemas diferentes, y como resultado –muchas personas trabajando juntas– webhooks se están volviendo una herramienta indispensable en la automatización de notificaciones. Un webhook bien escrito y configurado es una solución efectiva para notificaciones flexibles.
En el próximo artículo, aprenderemos los métodos y requests básicos que se necesitan para enviar alertas, recibir actualizaciones, y designar tags. Para hacerlo, vamos a inspeccionar de forma completa alguna webhook en detalles.
Preguntas
P: Tenemos un sistema de notificación listo hecho a partir de scripts. ¿Tiene sentido escribir un webhook para eso?
R: Sin duda. En primer lugar, el webhook se ejecuta nativamente en Zabbix, y por ello será mucho más productivo que en un script externo. En segundo lugar, el webhook es mucho más flexible, más funcional, y muy fácil de alterar.
P: Tenemos un servicio para el que nos querríamos escribir una integración, pero no contamos con especialistas capacitados que puedan hacerlo. ¿Sería posible solicitar esta integración para Zabbix?
R: Sí, si eres un partner Zabbix, puedes hacer una solicitud para crear tal integración.