Дополнительные Javascript объекты

Обзор

Этот раздел описывает Zabbix дополнения в Javascript язык, который реализован при помощи Duktape.

Встроенные объекты

Zabbix

Zabbix объект даёт возможность взаимодействия с внутренней функциональностью Zabbix.

Метод Описание
Log(уровень_журнала, сообщение) Записывает <сообщение> в журнал Zabbix с использованием <уровень_журнала> уровня журнала (смотрите DebugLevel параметр в файле конфигурации).

Пример:

Zabbix.Log(3, "this is a log entry written with 'Warning' log level")

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);