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 de JIRA y devolverá información sobre el creado tema.
probar {
Zabbix.log(4, '[Jira webhook] Comenzó con parámetros: ' + valor);
var resultado = {
'etiquetas': {
'punto final': 'jira'
}
},
params = JSON.parse(valor),
req = nueva HttpRequest(),
campos = {},
resp;
si (parámetros.HTTPProxy) {
req.setProxy(parámetros.HTTPProxy);
}
req.addHeader('Tipo de contenido: aplicación/json');
req.addHeader('Autorización: Básica ' + params.authentication);
campos.resumen = params.resumen;
campos.descripción = params.descripción;
campos.proyecto = {clave: params.proyecto_clave};
campos.issuetype = {id: params.issue_id};
resp = req.post('https://tsupport.zabbix.lan/rest/api/2/issue/',
JSON.stringify({"campos": campos})
);
if (req.getStatus() != 201) {
throw 'Código de respuesta: ' + req.getStatus();
}
respuesta = JSON.parse(resp);
result.tags.issue_id = resp.id;
result.tags.issue_key = resp.key;
devuelve JSON.stringify(resultado);
}
atrapar (error) {
Zabbix.log(4, '[Jira webhook] Falló la creación del problema json: ' + JSON.stringify({"fields": fields}));
Zabbix.log(3, '[Jira webhook] error en la creación del problema: ' + error);
throw 'Error con error: ' + error;
}
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;
}