Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

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

Обзор

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

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

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

Настройка

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

script_item.png

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

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

Поле Описание
Ключ Введите уникальный ключ, который будет использоваться для идентификации этого элемента данных.
Параметры Укажите переменные, которые будут переданы скрипту как пары атрибутов и значений.
Поддерживаются встроенные макросы {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.IP}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG} и пользовательские макросы
Скрипт Введите JavaScript код в блоке, который появится при нажатии на поле параметров (или на кнопку просмотра / изменения сразу за полем параметров). Этот код должен обеспечивать логику получаемого значения метрики.
Код имеет доступ ко всем параметрам, может выполнять запросы HTTP GET, POST, PUT и DELETE, а также имеет управление над HTTP заголовками и телом запроса.
Смотрите также: Дополнительные JavaScript объкты, Руководство пользователя JavaScript.
Время ожидания Время ожидания выполнения JavaScript (1-60s, по умолчанию 3s); превышение этого значения вернёт ошибку.
Поддерживаются суффиксы времени, например, 30s, 1m.
В зависимости от скрипта срабатывание времени ожидания может занять больше времени.

Примеры

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

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

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

Использование {HOST.CONN} макроса значением параметра и получение ответа с раскрытым макросом:

  • Создайте элемент данных с типом "Скрипт".
  • Создайте параметр:
    Имя: host
    Значение: {HOST.CONN}
  • В поле Скрипт введите следующий код:
var request = new HttpRequest();
       return request.post("https://postman-echo.com/post", JSON.parse(value));
Несколько 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;