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

Обзор

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

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

Скриптовые элементы данные обрабатываются Zabbix сервером или прокси на уровне поллеров.

Настройка

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

script_item.png

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

Поля, которые требуют информацию, специфичную для элементов данных Скрипт:

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

Примеры

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

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

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

Получение содержимого указанной страницы с использованием параметров:

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

  • В поле Скрипт введите следующий код:
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;