למרות ש- Zabbix מציעה מספר רב של שילובי webhook זמינים מחוץ לקופסה, ייתכן שתרצה ליצור webhooks משלך במקום זאת. זֶה הסעיף מספק דוגמאות של סקריפטים מותאמים אישית של webhook (בשימוש ב- פרמטר סקריפט). לִרְאוֹת webhook עבור תיאור של פרמטרים אחרים של 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 'נכשל בשגיאה: ' + שגיאה;
}
ה-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 'נכשל בשגיאה: ' + שגיאה;
}