Zabbix não é apenas um sistema de monitoramento versátil e flexível, mas também uma ferramenta conveniente para gerar alertas e interagir com service desks já existentes. Dentre os vários métodos de integração, webhooks se tornaram os mais populares. Neste texto, nós vamos dar uma olhada no que são webhooks, como eles são usados para integrar o Zabbix com soluções externas e veremos exemplos de caso de uso para essas integrações.
O que é um webhook?
Falando de forma generalizada, um webhook é um método de aumentar ou alterar o comportamento de uma página ou aplicação web com um retorno personalizado.
Mas para simplificar, um webhook é uma reação automática a um evento. Se um evento ocorrer (por exemplo, aparecer um problema), o webhook realiza uma chamada (via HTTP/HTTPS) para um serviço terceiro, para notificar sobre o evento.
Muitas soluções existentes oferecem uma API que permite a interação com elas através de webhooks.
O webhook é implementado no Zabbix usando JavaScript, então escrever o código não requer nenhum conhecimento específico de sintaxe do Zabbix, e por causa da predominância da linguagem JavaScript, você pode encontrar muitos exemplos, dicas, e guias na internet e na Comunidade Zabbix como um todo.
Como um webook funciona?
Essencialmente falando, um webhook é um código que realiza uma sequência de chamadas para chegar a um resultado. No caso do Zabbix, um código em JavaScript é executado para acessar o serviço de API e transferir, atualizar, e coletar dados de lá.
Por exemplo, nós precisamos abrir um ticket no service desk e deixar um comentário no ticket que terá informações sobre o problema. Para isso nós precisamos:
- Logar no serviço e pegar um token;
- Fazer uma request com o token para criar um ticket;
- Criar um comentário no recém-criado ticket utilizando um token.
Em diferentes serviços, os detalhes podem sem diferentes, mas a ideia geral será preservada de serviço a serviço.
Como usar?
Nossa equipe de Integração está constantemente em contato com a comunidade e monitora os serviços mais populares para desenvolver integrações oficiais out-of-the-box para elas. No momento, Zabbix oferece uma vasta seleção de webhooks nessa modalidade para os serviços mais populares, e nós revisamos um a um e aplicamos melhorias para eles todos os dias.
Na maioria dos casos, configurar um webhook pronto para uso leva entre 3-4 passos, que são descritos no arquivo README no repositório da Zabbix. Geralmente é preciso gerar uma chave de API no serviço, defini-la no Zabbix, definir a URL para o endpoint do serviço, e especificar alguns parâmetros necessários para que o webhook funcione.
Além das soluções já prontas, existe um repositório da comunidade no Github em que templates e webhooks personalizados são disponibilizados! Se você é o autor de algum webhook ou template, por favor compartilhe com a comunidade neste repositório!
Exemplo – webhook do Telegram
A teoria é boa, mas estamos todos interessados em como implementar um na prática. Vamos dar uma olhada no webhooks do Telegram como um exemplo.
Antes de mais nada, vamos ao repositório do Zabbix ou navegar no site da Zabbix até a sessão de integrações de Zabbix para ler as instruções de setup. No repositório, todos os templates e métodos de notificação estão localizados no diretório /templates, e para cada um deles existe um arquivo README com a sua descrição detalhada.
Do lado do Telegram, precisamos criar um bot e pegar o token dele, seguindo as instruções e definindo no parâmetro Token.
Depois disso, nós criamos um usuário, definimos o tipo de mídia Telegram para o usuário e, no campo “Enviar para”, escrevemos o id do usuário ou grupo do chat.
Pronto! Seu webhook está definido e pronto para enviar notificações ou informações de eventos para o Telegram!
Como vocês puderam notar, o setup não tomou muito tempo e não requer nenhum conhecimento profundo. Naturalmente, para um ajuste mais fino, é possível editar o conteúdo das mensagens, o tipo dos problemas, intervalos, e outros parâmetros.
Mas mesmo sem nenhuma alteração adicional, as notificações já estão prontas para serem enviadas.
É difícil escrever um webhook sozinho?
Claro, criar um webhook requer um certo nível de habilidade.
Antes de mais nada, conhecimento em JavaScript é necessário. A linguagem por sí mesma não é muito difícil e pode ser dominada relativamente rápida. O site da Documentação do Zabbix tem uma guideline para escrever webhooks com recomendações e melhores práticas.
Em Segundo lugar, entender como Zabbix funciona. Isso não requer um entendimento muito profundo do Zabbix, e a possibilidade de seguir instruções básicas é o suficiente. Você pode ler mais sobre definir métodos de notificação na documentação oficial. É importante configurar o webhook por sí próprio de forma apropriada, conceder permissão para usuários, e definir uma ação de notificação para as triggers necessárias.
E em terceiro lugar, estude a documentação do serviço para o qual o webhook será escrito. Apesar de todas as APIs terem o mesmo princípio, elas podem ser muito diferentes umas das outras quanto a estrutura de métodos e requests. Também é necessário entender o próprio serviço para entender como ele funciona. É difícil escrever uma integração se não for claro como o Zabbix deve interagir de forma apropriada com o serviço sendo integrado.
Resumindo:
Webhook é uma forma moderna e flexível de integração que permite com que o Zabbix seja uma solução universal. Como as realidades do nosso mundo implicam em um grande número de sistemas diferentes, e como resultado – muitas pessoas trabalhando juntas – webhooks estão se tornando uma ferramenta indispensável na automação de notificação. Um webhook bem escrito e configurado é uma solução efetiva para notificações flexíveis.
No próximo artigo, juntos nós iremos aprender os métodos e requests básicas que são necessárias para enviar alertas, receber updates, e designar tags. Para isso, nós vamos inspecionar de forma completa alguma webhook em detalhes.
Perguntas e respostas
P: Nós temos um sistema de notificação pronto para uso feito a partir de scripts. Faz sentido escrever um webhook para isso?
R: Com Certeza. Primeiramente, o webhook é executado nativamente no Zabbix, o que será muito mais produtivo do que em um script externo. Em segundo lugar, o webhook é muito mais flexível, mais funcional, e muito fácil de aplicar mudanças.
P: Nós temos um serviço para o qual gostaríamos de escrever uma integração, mas nós não temos especialistas qualificados que possam fazer isso. É possível solicitar tal integração para a Zabbix?
R: Sim, se você é um parceiro Zabbix, você pode fazer uma solicitação para criar tal integração.