Этот раздел описывает 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);