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 JavaScript de pré-processamento. Use var para declarar variáveis locais.

Jira webhook (personalizado)

Este script irá 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;
       }

Webhook do Slack (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;
       }