18 Скриптовые элементы данных

Обзор

Элементы данных типа «Скрипт» можно использовать для сбора данных путем выполнения пользовательского кода JavaScript с возможностью получения данных по HTTP/HTTPS. В дополнение к скрипту можно указать необязательный список параметров (пар имя-значение) и тайм-аут.

Этот тип элемента данных может быть полезен в сценариях сбора данных, требующих нескольких шагов или сложной логики. Например, элемент данных типа «Скрипт» можно настроить так, чтобы он выполнял HTTP-вызов, затем каким-либо образом обрабатывал данные, полученные на первом шаге, и передавал преобразованное значение во второй HTTP-вызов.

Элементы данных типа «Скрипт» обрабатываются опрашивателями сервера Zabbix или прокси.

Настройка

В поле Тип формы настройки элемента данных выберите Script, затем заполните обязательные поля.

script\_item.png

Все обязательные поля ввода отмечены красной звёздочкой.

Поля, требующие специальной информации для элементов данных типа Script:

Поле Описание
Ключ Введите уникальный ключ, который будет использоваться для идентификации элемента данных.
Параметры Укажите переменные, которые будут переданы в скрипт как пары атрибут-значение.
Поддерживаются пользовательские макросы. Чтобы узнать, какие встроенные макросы поддерживаются, выполните поиск по строке "Script-type item" в таблице поддерживаемых макросов.
Скрипт Введите код JavaScript в модальном редакторе, который открывается при щелчке в поле параметра или по значку карандаша рядом с ним. Этот код должен содержать логику возврата значения метрики.
Код имеет доступ ко всем параметрам и всем дополнительным объектам JavaScript, добавленным Zabbix.
См. также: Руководство по JavaScript.
Тайм-аут Тайм-аут выполнения JavaScript (1-600s; при его превышении будет возвращена ошибка).
Обратите внимание, что в зависимости от скрипта срабатывание тайм-аута может занять больше времени.
Дополнительную информацию о параметре Timeout см. в разделе общие атрибуты элемента данных.

Примеры

Простой сбор данных

Получение содержимого https://www.example.com/release\_notes:

  • Создайте элемент данных с типом "Скрипт".\
  • В поле Скрипт введите следующий код:
var request = new HttpRequest();
return request.get("https://www.example.com/release_notes");
Сбор данных с параметрами

Соберите содержимое определенной страницы и используйте параметры:

  • Создайте элемент данных типа "Script" и два параметра:
    • url : {$DOMAIN} (пользовательский макрос {$DOMAIN} должен быть определен, предпочтительно на уровне узла сети)
    • subpage : /release_notes

  • В поле Script введите:
var obj = JSON.parse(value);
var url = obj.url;
var subpage = obj.subpage;
var request = new HttpRequest();
return request.get(url + subpage);
Несколько HTTP запросов

Сбор содержимого как https://www.example.com, так и https://www.example.com/release\_notes:

  • Создайте элемент данных с типом "Скрипт".\
  • В поле Скрипт введите следующий код:
var request = new HttpRequest();
return request.get("https://www.example.com") + request.get("https://www.example.com/release_notes");
Журналирование

Добавление записи "Log test" в журнал Zabbix сервера и получение значением элемента данных "1":

  • Создайте элемент данных с типом "Скрипт".\
  • В поле Скрипт введите следующий код:
Zabbix.log(3, 'Log test');
return 1;