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;
       }