1 Примери Вебхук скрипти

Преглед

Иако Zabbix нуди велики број доступних вебхук интеграција готови, можда ћете желети да креирате сопствене вебхук-е. Ово одељак пружа примере прилагођених вебхук скрипти (користе се у параметар Скрипта). Видите вебхук одељак за опис других параметара вебхука.

Jira вебхук (персонализовано)

Ова скрипта ће креирати JIRA проблем и вратити неке информације о креираном проблему.

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 'Код одговора: ' + 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 вебхук (прилагођено)

Овај вебхук ће прослеђивати обавештења са Zabbix-а на 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;
}