Ова секција описује Zabbix додатке JavaScript језику који су имплементирани са Duktape-ом и подржане глобалне JavaScript функције.
Објекат Zabbix обезбеђује интеракцију са интерном функционалношћу.
Method | Description |
---|---|
log(loglevel, message) |
Уписује <message> у Zabbix лог користећи <loglevel> ниво записа (погледајте параметар конфигурационе датотеке DebugLevel). |
Пример:
Можете користити следеће псеудониме:
Alias | Alias to |
---|---|
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 по извршавању скрипте.
Method | Description |
---|---|
sleep(delay) |
Одлаже извршавање JavaScript-а за delay милисекунди. |
Пример (одлагање извршавања за 15 секунди):
Овај објекат обухвата cURL дескриптор, омогућавајући једноставне HTTP захтеве. Грешке се избацују као изузеци.
::: noteimportantИницијализација вишеструких HttpRequest
објеката је ограничена на 10 по извршавању скрипте. :::
Method | Description |
---|---|
addHeader(value) |
Додаје HTTP поље заглавља. Ово поље се користи за све наредне захтеве док се не обрише методом clearHeader() .Укупна дужина поља заглавља која се могу додати једном HttpRequest објекту је ограничена на 128 Kbajta (укључујући специјалне знакове и називе заглавља). |
clearHeader() |
Брише HTTP заглавље. Ако нису подешена поља заглавља, HttpRequest ће поставити Content-Type на application/json ако су подаци који се објављују у JSON формату; text/plain у супротном. |
connect(url) |
Шаље HTTP CONNECT захтев на URL и враћа одговор. |
customRequest(method, url, data) |
Омогућава навођење било које HTTP методе у првом параметру. Шаље захтев методе на URL са опционим data корисним теретом и враћа одговор. |
delete(url, data) |
Шаље HTTP DELETE захтев на URL са опционим data корисним теретом и враћа одговор. |
getHeaders(<asArray>) |
Враћа објекат примљених HTTP поља заглавља. Параметар asArray може бити подешен на "true" (нпр., getHeaders(true) ), „false“ или недефинисан. Ако је подешен на "true", примљене вредности HTTP поља заглавља биће враћене као низови; ово треба користити за преузимање вредности поља више истоимених заглавља.Ако није подешен или је подешен на "false", примљене вредности HTTP поља заглавља биће враћене као стрингови. |
get(url, data) |
Шаље HTTP GET захтев на URL са опционим data садржајем и враћа одговор. |
head(url) |
Шаље HTTP HEAD захтев на URL и враћа одговор. |
options(url) |
Шаље HTTP OPTIONS захтев на URL и враћа одговор. |
patch(url, data) |
Шаље HTTP PATCH захтев на URL са опционим data садржајем и враћа одговор. |
put(url, data) |
Шаље HTTP PUT захтев на URL са опционим data садржајем и враћа одговор. |
post(url, data) |
Шаље HTTP POST захтев на URL са опционим data садржајем и враћа одговор. |
getStatus() |
Враћа статусни код последњег HTTP захтева. |
setProxy(proxy) |
Поставља HTTP прокси на вредност „proxy“. Ако је овај параметар празан, онда се прокси не користи. |
setHttpAuth(bitmask, username, password) |
Поставља омогућене методе HTTP аутентификације (HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_NEGOTIATE, HTTPAUTH_NTLM, HTTPAUTH_NONE) у параметру 'bitmask'. Заставица HTTPAUTH_NONE омогућава онемогућавање HTTP аутентификације. Примери: request.setHttpAuth(HTTPAUTH_NTLM | HTTPAUTH_BASIC, username, password) request.setHttpAuth(HTTPAUTH_NONE) |
trace(url, data) |
Шаље HTTP TRACE захтев на URL са опционим data корисним теретом и враћа одговор. |
Пример:
try {
Zabbix.log(4, 'jira webhook script value='+value);
var result = {
'tags': {
'endpoint': 'jira'
}
},
params = JSON.parse(value),
req = new HttpRequest(),
fields = {},
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://jira.example.com/rest/api/2/issue/',
JSON.stringify({"fields": fields})
);
if (req.getStatus() != 201) {
throw 'Response code: '+req.getStatus();
}
resp = JSON.parse(resp);
result.tags.issue_id = resp.id;
result.tags.issue_key = resp.key;
} catch (error) {
Zabbix.log(4, 'jira issue creation failed json : '+JSON.stringify({"fields": fields}));
Zabbix.log(4, 'jira issue creation failed : '+error);
result = {};
}
return JSON.stringify(result);
XML објекат омогућава обраду XML података у ставци и претходну обраду откривања ниског нивоа и вебхукове.
Да би се користио XML објекат, сервер/прокси мора бити компилиран са подршком за libxml2.
Method | Description |
---|---|
XML.query(data, expression) |
Преузима садржај чвора користећи XPath. Враћа null ако чвор није пронађен. expression - XPath израз; data - XML подаци као стринг. |
XML.toJson(data) |
Конвертује податке из XML формате у JSON. |
XML.fromJson(object) |
Конвертује податке из JSON формате у XML. |
Пример:
Input:
<menu> <food type = "breakfast"> <name>Chocolate</name> <price>$5.95</price> <description></description> <calories>650</calories> </food> </menu>
Output:
"menu": {
"food": {
"@type": "breakfast",
"name": "Chocolate",
"price": "$5.95",
"description": null,
"calories": "650"
}
}
}
Конверзија XML у JSON биће обрађена према следећим правилима (за конверзије JSON у XML примењују се обрнута правила):
Пример:
Унос:
Излаз:
Пример:
Унос:
Излаз:
Пример:
Унос:
Излаз:
Пример:
Унос:
Излаз:
5. Ако текстуални елемент нема атрибуте и нема потомство, биће конвертован као стринг.
Пример:
Унос:
Излаз:
6. Ако текстуални елемент нема потомство, али има атрибуте, текстуални садржај ће бити конвертован у елемент са кључем '#text' и садржајем као вредношћу; атрибути ће бити конвертовани као што је описано у правилу серијализације 1.
Пример:
Унос:
Излаз:
Додатне глобалне JavaScript функције су имплементиране помоћу Duktape-а:
try {
b64 = btoa("test string");
buffer = atob(b64);
// Имајте на уму да логика декодирања зависи од формата података бафера.
decoded = String.fromCharCode.apply(this, [].slice.call(buffer));
}
catch (error) {
return {'error.name' : error.name, 'error.message' : error.message};
}
hmac('md5',кључ,подаци)
hmac('sha256',кључ,подаци)
\n
уместо нових редова;Кључ се такође може учитати из корисничког макроа/тајног макроа/трезора.
** data** - подаци који ће бити потписани. Може бити стринг (подржани су и бинарни подаци) или бафер (Uint8Array/ArrayBuffer).
OpenSSL или GnuTLS се користе за израчунавање потписа. Ако је Zabbix направљен без било које од ових библиотека за шифровање, појавиће се грешка ('недостаје OpenSSL или GnuTLS библиотека').