Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

Exemplos de script de webhook

Visão geral

Apesar de o Zabbix oferecer um grande número de integrações webhook disponíveis de forma nativa, você pode querer criar seus próprios webhooks. Esta seção provê exemplos de scripts webhook customizados (usados no parâmetro Script). Consulte a seção webhook para descrição de outros parâmetros de webhook.

Webhook para Jira (customizado)

Este script criará um chamado (issue) no JIRA e retornará informações sobre o chamado criado.

try {
           Zabbix.log(4, '[ Jira webhook ] Iniciado com params: ' + value);
       
           var result = {
                   'tags': {
                       'endpoint': 'jira'
                   }
               },
               params = JSON.parse(value),
               req = new HttpRequest(),
               fields = {},
               resp;
       
           if (params.HTTPProxy) {
               req.setProxy(params.HTTPProxy);
           }
       
           req.addHeader('Content-Type: application/json');
           req.addHeader('Authorization: Basic ' + params.authentication);
       
           fields.summary = params.summary;
           fields.description = params.description;
           fields.project = {key: params.project_key};
           fields.issuetype = {id: params.issue_id};
       
           resp = req.post('https://tsupport.zabbix.lan/rest/api/2/issue/',
               JSON.stringify({"fields": fields})
           );
       
           if (req.getStatus() != 201) {
               throw 'Codigo de resposta: ' + req.getStatus();
           }
       
           resp = JSON.parse(resp);
           result.tags.issue_id = resp.id;
           result.tags.issue_key = resp.key;
       
           return JSON.stringify(result);
       }
       catch (error) {
           Zabbix.log(4, '[ Jira webhook ] Criacao de chamado falhou (json) : ' + JSON.stringify({"fields": fields}));
           Zabbix.log(3, '[ Jira webhook ] Criacao de chamado falhou : ' + error);
       
           throw 'Falhou com erro: ' + error;
       }

Webhook para Slack (customizado)

Este webhook encaminhará notificações do Zabbix para um canal do Slack.

try {
           var params = JSON.parse(value),
               req = new HttpRequest(),
               response;
       
           if (params.HTTPProxy) {
               req.setProxy(params.HTTPProxy);
           }
       
           req.addHeader('Content-Type: application/x-www-form-urlencoded');
       
           Zabbix.log(4, '[ Slack webhook ] Requisicao webhook com valor=' + value);
       
           response = req.post(params.hook_url, 'payload=' + encodeURIComponent(value));
           Zabbix.log(4, '[ Slack webhook ] Respondido com codigo: ' + req.Status() + '. Resposta: ' + response);
       
           try {
               response = JSON.parse(response);
           }
           catch (error) {
               if (req.getStatus() < 200 || req.getStatus() >= 300) {
                   throw 'Requisicao falhou com codigo de estado ' + req.getStatus();
               }
               else {
                   throw 'Requisicao bem-sucedida, mas analise da resposta falhou.';
               }
           }
       
           if (req.getStatus() !== 200 || !response.ok || response.ok === 'false') {
               throw response.error;
           }
       
           return 'OK';
       }
       catch (error) {
           Zabbix.log(3, '[ Jira webhook ] Envio falhou. Erro: ' + error);
       
           throw 'Falhou com erro: ' + error;
       }