Aunque Zabbix ofrece una gran cantidad de integraciones de webhook disponibles listo para usar, es posible que desee crear sus propios webhooks en su lugar. Este La sección proporciona ejemplos de scripts de webhook personalizados (utilizados en el parámetro Script). Ver webhook para descripción de otros parámetros de webhook.
Este script creará un problema JIRA y devolverá información sobre el problema creado.
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;
}
Este webhook reenviará notificaciones de Zabbix a un canal de Slack.
intentar {
var parámetros = JSON.parse(valor),
solicitud = nueva HttpRequest(),
respuesta;
si (params.HTTPProxy) {
req.setProxy(params.HTTPProxy);
}
req.addHeader('Tipo de contenido: aplicación/x-www-form-urlencoded');
Zabbix.log(4, '[Slack webhook] Solicitud de webhook con valor=' + valor);
respuesta = req.post(params.hook_url, 'payload=' + encodeURIComponent(valor));
Zabbix.log(4, '[ Webhook de Slack ] Respondió con el código: ' + req.getStatus() + '. Respuesta: ' + respuesta);
intentar {
respuesta = JSON.parse(respuesta);
}
atrapar (error) {
si (req.getStatus() < 200 || req.getStatus() >= 300) {
throw 'La solicitud falló con el código de estado' + req.getStatus();
}
demás {
throw 'La solicitud se realizó correctamente, pero el análisis de la respuesta falló.';
}
}
if (req.getStatus() !== 200 || !response.ok || respuesta.ok === 'falso') {
lanzar respuesta.error;
}
devolver 'OK';
}
atrapar (error) {
Zabbix.log(3, '[ Webhook de Slack ] Error al enviar. Error: ' + error);
throw 'Error con error: ' + error;
}