Этот раздел описывает Zabbix дополнения в Javascript язык, который реализован при помощи Duktape.
Zabbix
Zabbix объект даёт возможность взаимодействия с внутренней функциональностью Zabbix.
Метод | Описание |
---|---|
Log(уровень_журнала, сообщение) |
Записывает <сообщение> в журнал Zabbix с использованием <уровень_журнала> уровня журнала (смотрите DebugLevel параметр в файле конфигурации). |
Пример:
CurlHttpRequest
Этот объект инкаспулирует cURL дескриптор, который позволяет выполнять простые HTTP запросы. Ошибки сообщаются в вызове исключений.
Метод | Описание |
---|---|
AddHeader(имя, значение) |
Добавление поля HTTP заголовка. Это поле используется для всех последующих вызовов, до момента очистки при помощи ClearHeader() метода. |
ClearHeader() |
Очистка HTTP заголовка. если заданные поля заголовков отсутствуют, CurlHttpRequest задаст Content-Type значением application/json, если публикуемые данные отформатированы в виде json и text/plain в противном случае. |
Get(url, данные) |
Отправка HTTP GET запроса на URL с необязательным информационным дополнением data и получение ответа. |
Put(url, данные) |
Отправка HTTP PUT запроса на URL с необязательным информационным дополнением data и получение ответа. |
Post(url, данные) |
Отправка HTTP POST запроса на URL с необязательным информационным дополнением data и получение ответа. |
Delete(url, данные) |
Отправка HTTP DELETE запроса на URL с необязательным информационным дополнением data и получение ответа. |
Status() |
Возврат кода состояния последнего HTTP запроса. |
Пример:
try {
Zabbix.Log(4, 'jira webhook script value='+value);
var result = {
'tags': {
'endpoint': 'jira'
}
},
params = JSON.parse(value),
req = new CurlHttpRequest(),
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://tsupport.zabbix.lan/rest/api/2/issue/',
JSON.stringify({"fields": fields})
);
if (req.Status() != 201) {
throw 'Response code: '+req.Status();
}
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);
Additional global JavaScript functions have been implemented with Duktape:
try {
b64 = btoa("utf8 string");
utf8 = atob(b64);
}
catch (error) {
return {'error.name' : error.name, 'error.message' : error.message}
}