Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

1 Ejemplos de scripts de Webhook

Descripción general

Aunque Zabbix ofrece una gran cantidad de integraciones de webhook disponibles de forma predeterminada, es posible que desee crear sus propios webhooks. Esta sección proporciona ejemplos de scripts de webhook personalizados (utilizados en el parámetro Script). Consulte la sección webhook para obtener una descripción de otros parámetros de webhook.

No utilice asignaciones no declaradas en JavaScript de preprocesamiento. Utilice var para declarar variables locales.

Los eventos de recuperación (ya sea generados automáticamente o tras un cierre manual) incluyen etiquetas de eventos resueltas (incluidas las etiquetas heredadas de templates, hosts y triggers). Los scripts de webhook se ejecutan después de que se crea la alerta; por lo tanto, las etiquetas devueltas por un script de webhook se aplican después de la creación inicial de la alerta y es posible que no estén presentes en la alerta que activó el webhook. Si una integración requiere que las etiquetas producidas por un webhook estén presentes en la notificación inicial, obtenga las etiquetas de eventos del server (por ejemplo, utilizando la API Event) o almacene las etiquetas producidas por el webhook en un almacenamiento persistente externo y correlacione allí.

Webhook de Jira (personalizado)

Este script creará una incidencia en JIRA y devolverá información sobre la incidencia creada.

try {
           Zabbix.log(4, '[ Jira webhook ] Iniciado con parámetros: ' + 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 'Código de respuesta: ' + 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 ] Fallo en la creación de la incidencia json : ' + JSON.stringify({"fields": fields}));
           Zabbix.log(3, '[ Jira webhook ] fallo en la creación de la incidencia : ' + error);
       
           throw 'Falló con el error: ' + error;
       }

Slack webhook (personalizado)

Este webhook reenviará notificaciones de Zabbix a un canal de 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;
       }