Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

Sidebar

Zabbix Summit 2022
View presentations

Дополнительные 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);

Global JavaScript functions

Additional global JavaScript functions have been implemented with Duktape:

  • btoa(string) - encodes string to base64 string
  • atob(base64_string) - decodes base64 string
try {
           b64 = btoa("utf8 string");
           utf8 = atob(b64);
       } 
       catch (error) {
           return {'error.name' : error.name, 'error.message' : error.message}
       }
  • md5(string) - calculates the MD5 hash of a string. This function is supported since Zabbix 5.0.9
  • sha256(string) - calculates the SHA256 hash of a string. This function is supported since Zabbix 5.0.9