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;
       }
Copy
✔ Copied

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;
       }
Copy
✔ Copied
To toggle search highlight, press Ctrl+Alt+H
Have an improvement suggestion for this page? Select the text that could be improved and press Ctrl+Enter to send it to the editors.