4 Webhook

Visão geral

O tipo de mídia webhook é útil para chamadas HTTP customizadas de código JavaScript para integração direta com software externos como sistemas de helpdesk, chats, ou mensageiros. Você pode escolher importar uma integração provida pelo Zabbix ou criar uma integração customizada do zero.

Integrações

As seguintes integrações estão disponíveis, permitindo que tipos de mídia de webhook predefinidos sejam usados para enviar notificações do Zabbix para:

Além dos serviços listados aqui, o Zabbix pode ser integrado com Spiceworks (nenhum webhook é necessário). Para converter notificações do Zabbix em tickets do Spiceworks, crie um email media type e insira o endereço de email do helpdesk do Spiceworks (por exemplo, [email protected]) nas configurações de perfil de um usuário designado do Zabbix.

Configuração

Para começar a usar uma integração de webhook:

  1. Localize o arquivo .xml necessário no diretório templates/media da versão baixada do Zabbix ou baixe-o do git repository
  2. Importe Import o arquivo na sua instalação do Zabbix. O webhook aparecerá na lista de tipos de mídia.
  3. Configure o webhook de acordo com as instruções no arquivo Readme.md (você pode clicar no nome do webhook acima para acessar rapidamente o Readme.md).

Para criar um webhook personalizado do zero:

  • Vá para Administração → Tipos de mídia
  • Clique em Criar um tipo de mídia

A aba Tipo de mídia contém vários atributos específicos para este tipo de mídia:

Todos os campos obrigatórios são marcados com um asterisco vermelho.

Parâmetro Descrição
Parâmetros Especifique as variáveis do webhook como pares de atributos e valores.
Para webhooks preconfigurados, uma lista de parâmetros varia, dependendo do serviço. Verifique o arquivo Readme.md do webhook para a descrição dos parâmetros.
Para novos webhooks, múltiplas variáveis comuns são incluídas por padrão (URL:<empty>, HTTPProxy:<empty>, To:{ALERT.SENDTO}, Subject:{ALERT.SUBJECT}, Message:{ALERT.MESSAGE}), sinta-se à vontade para mantê-las ou removê-las.
Todos os macros macros que são suportados em notificações de problemas são suportados nos parâmetros.
Se você especificar um proxy HTTP, o campo suporta a mesma funcionalidade que no campo de configuração do item do HTTP proxy. A string do proxy pode ser prefixada com [scheme]:// para especificar qual tipo de proxy é usado (por exemplo, https, socks4, socks5; veja a documentação) documentation).
Script Insira o código JavaScript no bloco que aparece ao clicar no campo do parâmetro (ou no botão de visualização/edição ao lado dele). Este código executará a operação do webhook.
O script é um código de função que aceita pares de parâmetro - valor. Os valores devem ser convertidos em objetos JSON usando o método JSON.parse(), por exemplo: var params = JSON.parse(value);.

O código tem acesso a todos os parâmetros, pode executar solicitações HTTP GET, POST, PUT e DELETE e tem controle sobre os cabeçalhos HTTP e o corpo da solicitação.
O script deve conter um operador return, caso contrário, não será válido. Pode retornar o status OK junto com uma lista opcional de tags e valores de tags (veja a opção Processar tags) ou uma string de erro.

Observe que o script é executado apenas após a criação de um alerta. Se o script estiver configurado para retornar e processar tags, essas tags não serão resolvidas nos macros {EVENT.TAGS} e {EVENT.RECOVERY.TAGS} na mensagem inicial do problema e nas mensagens de recuperação, pois o script ainda não teve tempo de ser executado.
Nota: Usar variáveis locais em vez de globais é recomendado para garantir que cada script opere em seus próprios dados e que não haja colisões entre chamadas simultâneas (veja known issues).

Veja também: Webhook development guidelines, Webhook script examples, Additional JavaScript objects.
Timeout Tempo limite de execução do JavaScript (1-60s, padrão 30s).
Sufixos de tempo são suportados, por exemplo, 30s, 1m.
Processar tags Marque a caixa de seleção para processar valores de propriedades JSON retornadas como tags. Essas tags são adicionadas às tags de eventos de problema já existentes (se houver) no Zabbix.
Se um webhook usar tags (a caixa de seleção Processar tags estiver marcada), o webhook deve sempre retornar um objeto JSON contendo pelo menos um objeto vazio para tags:var result = {tags: {}};.
Exemplos de tags que podem ser retornadas: Jira ID: PROD-1234, Responsible: John Smith, Processed:<no value>, etc.
Incluir entrada no menu de eventos Marque a caixa de seleção para incluir uma entrada no event menu vinculando ao ticket externo criado.
Se marcado, o webhook não deve ser usado para enviar notificações para diferentes usuários (considere criar um dedicated user em vez disso) ou em várias ações de alerta related to a single problem event.
Nome da entrada no menu Especifique o nome da entrada no menu.
{EVENT.TAGS.<tag name>} macro é suportado.
Este campo é obrigatório apenas se Incluir entrada no menu de eventos estiver selecionado.
URL da entrada no menu Especifique o URL subjacente da entrada no menu.
{EVENT.TAGS.<tag name>} macro é suportado.
Este campo é obrigatório apenas se Incluir entrada no menu de eventos estiver selecionado.

Para mais detalhes sobre como configurar mensagens padrão e opções de processamento de alertas, consulte common media type parameters.

Mesmo que um webhook não use mensagens padrão, os templates de mensagens para tipos de operação usados por este webhook ainda devem ser definidos.

Mídia do usuário

Depois que o tipo de mídia estiver configurado, vá para a seção Administração → Usuários e atribua a mídia do webhook a um usuário existente ou crie um novo usuário para representar o webhook. Os passos para configurar a mídia do usuário para um usuário existente, sendo comum para todos os tipos de mídia, estão descritos na página Media types .

Se um webhook usar tags para armazenar o ID do ticket/mensagem, evite atribuir o mesmo webhook como mídia a diferentes usuários, pois isso pode causar erros no webhook (aplica-se à maioria dos webhooks que utilizam a opção Incluir entrada no menu de eventos). Nesse caso, a melhor prática é criar um usuário dedicado para representar o webhook:

  1. Após configurar o tipo de mídia do webhook, vá para a seção Administração → Usuários e crie um usuário Zabbix dedicado para representar o webhook - por exemplo, com o nome de usuário Slack para o webhook do Slack. Todas as configurações, exceto a mídia, podem ser deixadas nos padrões, pois esse usuário não fará login no Zabbix.
  2. No perfil do usuário, vá para a aba Mídia e adicione um webhook com as informações de contato necessárias. Se o webhook não usar um campo Enviar para, insira qualquer combinação de caracteres suportados para contornar os requisitos de validação.
  3. Conceda a esse usuário pelo menos permissões de leitura permissions a todos os hosts para os quais ele deve enviar os alertas.

Ao configurar a ação de alerta, adicione este usuário no campo Enviar para usuários nos detalhes da operação - isso informará ao Zabbix para usar o webhook para notificações desta ação.

Configurando ações de alerta

As ações determinam quais notificações devem ser enviadas via webhook. Os passos para configurar ações configuring actions envolvendo webhooks são os mesmos que para todos os outros tipos de mídia, com as seguintes exceções:

  • Se um webhook usar tags para armazenar ID de ticket/mensagem e para acompanhar operações de atualização/resolução, esse webhook não deve ser usado em várias ações de alerta para um único evento de problema. Se
    {EVENT.TAGS.<name>} já existir e for atualizado no webhook, o valor resultante não será definido. Para esse caso, deve-se usar um novo nome de tag no webhook para armazenar valores atualizados. Isso se aplica aos webhooks do Jira, Jira Service Desk, Mattermost, Opsgenie, OTRS, Redmine, ServiceNow, Slack, Zammad e Zendesk fornecidos pelo Zabbix e à maioria dos webhooks que utilizam a opção Incluir entrada de menu de evento. Usar o webhook em várias operações é permitido se essas operações ou etapas de escalonamento pertencerem à mesma ação. Também é permitido usar esse webhook em diferentes ações se as ações não forem aplicadas ao mesmo evento de problema devido a diferentes condições de filtro.
  • Ao usar um webhook em ações para eventos internos internal events: na configuração da operação de ação, marque a caixa Mensagem personalizada e defina a mensagem personalizada, caso contrário, uma notificação não será enviada.