18 Скриптовые элементы данных
Обзор
Элементы данных типа «Скрипт» можно использовать для сбора данных путем выполнения пользовательского кода JavaScript с возможностью получения данных по HTTP/HTTPS. В дополнение к скрипту можно указать необязательный список параметров (пар имя-значение) и тайм-аут.
Этот тип элемента данных может быть полезен в сценариях сбора данных, требующих нескольких шагов или сложной логики. Например, элемент данных типа «Скрипт» можно настроить так, чтобы он выполнял HTTP-вызов, затем каким-либо образом обрабатывал данные, полученные на первом шаге, и передавал преобразованное значение во второй HTTP-вызов.
Элементы данных типа «Скрипт» обрабатываются опрашивателями сервера Zabbix или прокси.
Настройка
В поле Тип формы настройки элемента данных выберите Script, затем заполните обязательные поля.

Все обязательные поля ввода отмечены красной звёздочкой.
Поля, требующие специальной информации для элементов данных типа 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;