ופונקציות
אובייקט Zabbix מספק אינטראקציה עם הפונקציונליות הפנימית של Zabbix.
שיטה | תיאור |
---|---|
log(loglevel, message) |
כותב <הודעה> לתוך יומן Zabbix באמצעות רמת יומן <loglevel> (ראה פרמטר DebugLevel של קובץ התצורה). |
דוגמא:
אתה יכול להשתמש בכינויים הבאים:
כינוי | כינוי ל |
---|---|
console.log(object) | Zabbix.log(4, JSON.stringify(object)) |
console.warn(object) | Zabbix.log(3, JSON.stringify(object)) |
console.error(object) | Zabbix.log(2, JSON.stringify(object)) |
::: שימו לב חשוב הגודל הכולל של כל ההודעות שנרשמו מוגבל ל-8 MB לכל ביצוע סקריפט. :::
שיטה | תיאור |
---|---|
sleep(delay) |
השהיית ביצוע JavaScript ב-delay אלפיות שניות. |
דוגמה (עיכוב ביצוע ב-15 שניות):
::: שימו לב חשוב "HttpRequest" הוא שם חדש לאובייקט זה מאז Zabbix 5.4. בעבר זה נקרא "CurlHttpRequest". שמות השיטה שונו גם ב- Zabbix 5.4. שמות האובייקטים/השיטות הישנים הוצאו משימוש והתמיכה בהם תופסק לאחר Zabbix 6.0. :::
אובייקט זה מקפל את ידית cURL המאפשר לבצע בקשות HTTP פשוטות. שגיאות נזרקות כחריגים.
::: שימו לב חשוב האתחול של אובייקטי HttpRequest
מרובים מוגבל ל-10 לכל ביצוע סקריפט. :::
שיטה | תיאור |
---|---|
addHeader(name, value) |
מוסיף שדה כותרת HTTP. שדה זה משמש עבור כל הבקשות הבאות עד לניקוי בשיטת clearHeader() .האורך הכולל של שדות כותרת שניתן להוסיף לאובייקט HttpRequest בודד מוגבל ל-128 Kbytes (תווים מיוחדים ושמות כותרות) כלול). |
clearHeader() |
מנקה כותרת HTTP. אם לא מוגדרים שדות כותרת, HttpRequest יגדיר את Content-Type לאפליקציה/json אם הנתונים המתפרסמים הם בפורמט JSON; טקסט/פשוט אחרת. |
connect(url) |
שולח בקשת HTTP CONNECT לכתובת ה-URL ומחזיר את התגובה. |
customRequest(method, url, data) |
מאפשר לציין כל שיטת HTTP בפרמטר הראשון. שולח את בקשת השיטה לכתובת ה-URL עם מטען נתונים אופציונלי ומחזיר את התגובה. |
delete(url, data) |
שולח בקשת HTTP DELETE לכתובת ה-URL עם מטען נתונים אופציונלי ומחזיר את התגובה. |
getHeaders(<asArray>) |
מחזיר את האובייקט של שדות כותרות HTTP שהתקבלו. הפרמטר asArray עשוי להיות מוגדר ל"true" (למשל, getHeaders(true) ), "false" או להיות לא מוגדר . אם הוגדר כ-"true" ערכי שדות כותרת ה-HTTP שהתקבלו יוחזרו כמערכים; יש להשתמש בזה כדי לאחזר את ערכי השדות של כותרות מרובות באותו שם.אם לא מוגדר או מוגדר כ-"false", ערכי שדות ה-HTTP שהתקבלו יוחזרו כמחרוזות. |
get(url, data) |
שולח בקשת HTTP GET לכתובת האתר עם מטען נתונים אופציונלי ומחזיר את התגובה. |
head(url) |
שולח בקשת HTTP HEAD לכתובת האתר ומחזיר את התגובה. |
options(url) |
שולח בקשת HTTP OPTIONS לכתובת האתר ומחזיר את התגובה. |
patch(url, data) |
שולח בקשת HTTP PATCH לכתובת ה-URL עם מטען נתונים אופציונלי ומחזיר את התגובה. |
put(url, data) |
שולח בקשת HTTP PUT לכתובת ה-URL עם מטען data אופציונלי ומחזיר את התגובה. |
post(url, data) |
שולח בקשת HTTP POST לכתובת האתר עם מטען נתונים אופציונלי ומחזיר את התגובה. |
getStatus() |
מחזיר את קוד המצב של בקשת ה-HTTP האחרונה. |
setProxy(proxy) |
מגדיר פרוקסי HTTP לערך "proxy". אם פרמטר זה ריק, לא נעשה שימוש בפרוקסי. |
setHttpAuth(bitmask, שם משתמש, סיסמה) |
מגדיר שיטות אימות HTTP מאושרות (HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_NEGOTIATE, HTTPAUTH_NTLM, HTTPAUTH_NONE) בפרמטר 'bitmask'. ה-HTTPAUTH דגל _NONE מאפשר להשבית אימות HTTP. דוגמאות: request.setHttpAuth(HTTPAUTH_NTLM \| HTTPAUTH_BASIC, שם משתמש, סיסמה) request.setHttpAuth(HTTPAUTH_NONE) |
trace(url, data) |
שולח בקשת HTTP TRACE לכתובת ה-URL עם מטען data אופציונלי ומחזיר את התגובה. |
דוגמא:
נסה {
Zabbix.log(4, 'jira webhook script value='+value);
var result = {
'תגים': {
'נקודת קצה': 'ג'ירה'
}
},
params = JSON.parse(value),
req = new HttpRequest(),
שדות = {},
resp;
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;
} תפוס (שגיאה) {
Zabbix.log(4, 'יצירת בעיה של jira נכשלה json : '+JSON.stringify({"fields": fields}));
Zabbix.log(4, 'יצירת בעיה של ג'ירה נכשלה: '+שגיאה);
תוצאה = {};
}
החזר JSON.stringify(result);
אובייקט ה-XML מאפשר עיבוד של נתוני XML בפריט ו עיבוד מקדים לגילוי ברמה נמוכה ו-webhooks.
::: שימו לב חשוב על מנת להשתמש באובייקט XML, השרת/פרוקסי חייב להיות הידור עם תמיכה ב-libxml2. :::
שיטה | תיאור |
---|---|
XML.query(data, expression) |
מאחזר תוכן צומת באמצעות XPath. מחזירה null אם הצומת לא נמצא. ביטוי - ביטוי XPath; נתונים - נתוני XML כמחרוזת. |
XML.toJson(data) |
ממיר נתונים בפורמט XML ל-JSON. |
XML.fromJson(object) |
ממיר נתונים בפורמט JSON ל-XML. |
דוגמא:
קֶלֶט:
<תפריט>
<סוג מזון = "ארוחת בוקר">
<name>שוקולד</name>
<price>$5.95</price>
<description></description>
<calories>650</calories>
</food>
</menu>
תְפוּקָה:
{
"תפריט": {
"מזון": {
"@type": "ארוחת בוקר",
"name": "שוקולד",
"price": "$5.95",
"תיאור": null,
"קלוריות": "650"
}
}
}
המרת XML ל-JSON תעובד לפי ההנחיות הבאות כללים (עבור המרות JSON ל-XML מוחלים כללים הפוכים):
1. תכונות XML יומרו למפתחות עם שמותיהם עם '@'.
דוגמא:
קֶלֶט:
תְפוּקָה:
2. אלמנטים סגירה עצמית (<foo/>) יומרו כבעלי ערך 'null'.
דוגמא:
קֶלֶט:
תְפוּקָה:
3. מאפיינים ריקים (עם ערך "") יומרו כריקים ערך מחרוזת ('').
דוגמא:
קֶלֶט:
תְפוּקָה:
4. מספר צמתים צאצאים עם אותו שם אלמנט יומרו מפתח בודד בעל מערך ערכים כערך שלו.
דוגמא:
קֶלֶט:
תְפוּקָה:
5. אם לרכיב טקסט אין תכונות ואין ילדים, הוא יהיה הומר כמחרוזת.
דוגמא:
קֶלֶט:
תְפוּקָה:
6. אם לרכיב טקסט אין ילדים, אבל יש לו תכונות: תוכן טקסט יומר לרכיב עם המפתח '#text' ותוכן בתור ערך; המאפיינים יומרו כמתואר בסידרה חוק מספר 1.
דוגמא:
קֶלֶט:
תְפוּקָה:
פונקציות JavaScript גלובליות נוספות יושמו עם Duktape:
נסה {
b64 = btoa("utf8 מחרוזת");
utf8 = atob(b64);
}
לתפוס (שגיאה) {
החזר {'error.name': error.name, 'error.message': error.message}
}
md5(נתונים) - מחשב את ה-hash MD5 של הנתונים
sha256(data) - מחשב את ה-hash SHA256 של הנתונים
hmac('<hash type>',key,data) - מחזיר HMAC hash כמחרוזת בפורמט hex; סוגי hash MD5 ו-SHA256 נתמכים; פרמטרי מפתח ונתונים תומכים בנתונים בינאריים. דוגמאות:
hmac('md5',key,data)
hmac('sha256',key,data)
sign(hash,key,data) - מחזיר חתימה מחושבת (חתימת RSA עם SHA-256) כמחרוזת, כאשר:
hash - מותר רק 'sha256', אחרת נזרקת שגיאה;
מפתח - המפתח הפרטי. זה צריך להתאים לתקן PKCS#1 או PKCS#8. ניתן לספק את המפתח בצורות שונות:
ניתן לטעון את המפתח גם ממאקרו/מאקרו סודי/כספת של המשתמש.
נתונים - הנתונים שיחתמו. זה יכול להיות מחרוזת (נתמכים גם נתונים בינאריים) או מאגר (Uint8Array/ArrayBuffer).
OpenSSL או GnuTLS משמשים לחישוב החתימות. אם Zabbix נבנתה ללא אף אחת מספריות ההצפנה הללו, תיגרם שגיאה ('חסרה ספריית OpenSSL או GnuTLS').
פונקציה זו נתמכת מאז Zabbix 6.0.15.