דוגמאות לסקריפט התלייה

סקירה כללית

למרות ש- Zabbix מציעה מספר רב של שילובי webhook זמינים מחוץ לקופסה, ייתכן שתרצה ליצור webhooks משלך במקום זאת. זֶה הסעיף מספק דוגמאות של סקריפטים מותאמים אישית של webhook (בשימוש ב- פרמטר סקריפט). לִרְאוֹת webhook עבור תיאור של פרמטרים אחרים של webhook.

Jira webhook (מותאם אישית)

סקריפט זה יצור בעיית JIRA ויחזיר קצת מידע על היצירה נושא.

נסה {
     Zabbix.log(4, '[ Jira webhook ] התחיל עם params: ' + value);

     var result = {
             'תגים': {
                 'נקודת קצה': 'ג'ירה'
             }
         },
         params = JSON.parse(value),
         req = new HttpRequest(),
         שדות = {},
         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://tsupport.zabbix.lan/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;

     החזר JSON.stringify(result);
}
לתפוס (שגיאה) {
     Zabbix.log(4, '[ Jira webhook ] יצירת בעיה נכשלה json : ' + JSON.stringify({"fields": fields}));
     Zabbix.log(3, '[Jira webhook] יצירת בעיה נכשלה: ' + error);

     throw 'נכשל בשגיאה: ' + שגיאה;
}

Slack webhook (מותאם אישית)

ה-webhook הזה יעביר הודעות מ-Zabix לערוץ Slack.

נסה {
     var params = JSON.parse(value),
         req = new HttpRequest(),
         תְגוּבָה;

     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 ] הגיב עם קוד: ' + req.getStatus() + '. תגובה: ' + תגובה);

     נסה {
         response = JSON.parse(response);
     }
     לתפוס (שגיאה) {
         if (req.getStatus() < 200 || req.getStatus() >= 300) {
             throw 'הבקשה נכשלה עם קוד המצב' + req.getStatus();
         }
         אחר {
             throw 'הבקשה הצליחה, אבל ניתוח התגובה נכשל.';
         }
     }

     if (req.getStatus() !== 200 || !response.ok || response.ok === 'false') {
         לזרוק תגובה.שגיאה;
     }

     החזר 'אישור';
}
לתפוס (שגיאה) {
     Zabbix.log(3, '[ Slack webhook ] השליחה נכשלה. שגיאה: ' + error);

     throw 'נכשל בשגיאה: ' + שגיאה;
}