Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

1 Exemplos de scripts de webhook

Visão geral

Embora o Zabbix ofereça um grande número de integrações de webhook disponíveis por padrão, você pode querer criar seus próprios webhooks. Esta seção fornece exemplos de scripts de webhook personalizados (usados no parâmetro Script). Consulte a seção webhook para a descrição de outros parâmetros de webhook.

Não use atribuições não declaradas no pré-processamento do JavaScript. Use var para declarar variáveis locais.

Jira webhook (personalizado)

Este script criará um ticket no JIRA e retornará algumas informações sobre o ticket criado.

try {
           Zabbix.log(4, '[ Jira webhook ] Started with 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://jira.example.com/rest/api/2/issue/',
               JSON.stringify({"fields": fields})
           );
       
           if (req.getStatus() != 201) {
               throw 'Response code: ' + 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 ] Issue creation failed json : ' + JSON.stringify({"fields": fields}));
           Zabbix.log(3, '[ Jira webhook ] issue creation failed : ' + error);
       
           throw 'Failed with error: ' + error;
       }

Slack webhook (personalizado)

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 ] Webhook request with value=' + value);
       
           response = req.post(params.hook_url, 'payload=' + encodeURIComponent(value));
           Zabbix.log(4, '[ Slack webhook ] Responded with code: ' + req.getStatus() + '. Response: ' + response);
       
           try {
               response = JSON.parse(response);
           }
           catch (error) {
               if (req.getStatus() < 200 || req.getStatus() >= 300) {
                   throw 'Request failed with status code ' + req.getStatus();
               }
               else {
                   throw 'Request success, but response parsing failed.';
               }
           }
       
           if (req.getStatus() !== 200 || !response.ok || response.ok === 'false') {
               throw response.error;
           }
       
           return 'OK';
       }
       catch (error) {
           Zabbix.log(3, '[ Slack webhook ] Sending failed. Error: ' + error);
       
           throw 'Failed with error: ' + error;
       }