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

2 Предобработка значений элементов данных

Обзор

Предобработка позволяет определить правила преобразования для полученных значений элемента данных. Возможно настроить одно или несколько преобразований перед сохранением значений в базе данных. Преобразования выполняются в том порядке, в котором они определены. Предварительная обработка выполняется либо Zabbix сервером, либо Zabbix прокси (для элементов, контролируемых прокси).

См.также:

Настройка

Правила предобработки определяются на вкладке Предобработка формы настройки элемента данных.

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

Для элементов данных log* метаданные журнала (без значения) всегда сбрасывают состояние неподдерживаемого элемента и снова поддерживают элемент, даже если первоначальная ошибка произошла после получения значения от агента.

Пользовательские макросы и пользовательские макросы с контекстом поддерживаются в параметрах предварительной обработки значения элемента, в том числе внутри кода JavaScript.

Контекст игнорируется, когда макрос заменяется его значением. Значение макроса вставляется в код как есть, без возможности добавить дополнительное экранирование до помещения значения в код JavaScript. Обратите внимание, что в некоторых случаях это может вызвать ошибки JavaScript.

Тип Преобразование Описание
Текст
Регулярное выражение Совпадение значения с регулярным выражением <шаблона> и замена значения в соответствии с <выводом>. Регулярное выражение поддерживает извлечение до 10 захваченных групп в \N последовательности. Элемент данных станет неподдерживаемым в случае ошибки при поиске соответствия во входящем значении.
Параметры:
шаблон - регулярное выражение
вывод - шаблон форматирования вывода. \N (где N=1..9) - управляющая последовательность заменяется N-нной совпадающей группой. Управляющая последовательность \0 заменяется совпадающим текстом
Поддерживается начиная с 3.4.0.
Пожалуйста, обратитесь в разделу регулярных выражений для ознакомления с некоторыми существующими примерами.
Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Замена Найти строку поиска и заменить ее другой (или пустотой). Все совпадающие строки поиска будут заменены.
Параметры:
строка поиска - строка для поиска и замены, с учетом регистра (обязательно)
замена - строка для замены строки поиска. Строка замены также может быть пустой, что позволяет эффективно удалять строку поиска при ее обнаружении.
Можно использовать управляющие последовательности для поиска или замены разрывов строк, возврата каретки, табуляции и пробелов %% "\ n \ r \ t \ s "%%; обратную косую черту можно экранировать как "\\", а управляющие последовательности можно экранировать как %% "\\n" %%. Экранирование разрывов строк, возврата каретки, вкладок выполняется автоматически при низкоуровневом обнаружении.
Поддерживается с 5.0.0.
Обрезка Удаление указанных символов с начала или конца значения.
Обрезка справа Удаление указанных символов с конца значения.
Обрезка слева Удаление указанных символов с начала значения.
Составные данные
XML XPath Извлечение значения или фрагмента из XML данных с использованием XPath функционала.
Чтобы эта опция заработала, Zabbix сервер необходимо скомпилировать с поддержкой libxml.
Примеры:
number(/document/item/value) извлечёт 10 из <document><item><value>10</value></item></document>
number(/document/item/@attribute) извлечёт 10 из <document><item attribute="10"></item></document>
/document/item извлечёт <item><value>10</value></item> из <document><item><value>10</value></item></document>
Обратите внимание на то, что пространства имен не поддерживаются.
Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
JSON Path Извлечение значения или фрагмента с JSON данных с использованием простейшего набора функций JSONPath функционала.
Примеры:
$.document.item.value извлечёт 10 с {"document":{"item":{"value": 10}}}
$.document.item извлечёт {"value": 10} с {"document":{"item":{"value": 10}}}
$['a document'].item.value извлечёт 10 с {"a document":{"item":{"value": 10}}}
$.document.items[1].value извлечёт 20 с {"document":{"items":[{"value": 10}, {"value": 20}]}}
Обратите внимание, что поддерживаются только прямые пути к одиночным объектам в обозначении точкой или квадратной скобкой.
В JSONPath обозначении точкой ($.a.b.c) можно использовать только буквенно-цифровые символы + символ подчёркивания . Если имя объекта JSON содержит другие символы, необходимо использовать обозначение квадратной скобкой ($['a']['b']['c']). Допускается смешивание обозначений ($.a['b'].c)
Извлечение нескольких значений не поддерживается.
Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
CSV в JSON Данные файла CSV конвертируются в формат JSON.
Для получения дополнительной информации см. : Преобразование CSV в JSON.
Поддерживается с 4.4.0.
Арифметические
Пользовательский множитель Умножение значения на заданное целое или дробное число.
Использование этой опции сконвертирует полученные значения в KB, MBps, и т.д. в B, Bps. В противном случае Zabbix не сможет корректно подставить префиксы (K, M, G и т.д.).\\Поддерживается научное представление, например, 1e+70.
Обратите внимание, что если тип элемента информации Числовой (целое положительное), входящие значения с дробной частью будут обрезаны (т. е. «0,9» станет «0») до применения пользовательского множителя.
Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Изменение
Простое изменение Вычисление разницы между текущим и предыдущим значениями.
Вычисляется значение-пред_значение, где
значение - текущее значение; пред_значение - ранее полученное значение
Эта опция может быть полезной для измерения постоянно растущего значения. Если текущее значение меньше предыдущего, тогда Zabbix отбрасывает это изменение (ничего не записывает) и ждет следующего значения.
На один элемент данных разрешена только одна операция изменения. Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Изменение в секунду Вычисление изменения значения (разница между текущим и предыдущим значениями) скорость в секунду.
Вычисляется (значение-пред_значение)/(время-пред_время), где
значение - текущее значение; пред_значение - ранее полученное значение; Время - текущий штамп времени; пред_значение - штамп времени предыдущего значения.
Эта настройка крайне полезна при получении скорости в секунду в случае постоянно увеличивающихся значений. Если текущее значение меньше чем предыдущее значение, Zabbix отбрасывает эту разницу (ничего не записывает) и ждет следующее значение. Такое поведение помогает отрабатывать, например, переполнение 32-битных счетчиков SNMP.
Обратите внимание: Так как результатом этого вычисления может быть число с плавающей точкой, рекомендуется использовать 'Тип информации' - Числовой (с плавающей точкой), даже если входящие значения целые положительные числа. Это особенно актуально для маленьких чисел, где дробная часть имеет значение. В случае, если числа с плавающей точкой очень большие и могут превысить длину поля, введенное значение может быть потеряно - в таком случае предлагается использовать тип Числовой (целое положительное), и это отбросит только дробную часть.
На один элемент данных разрешена только одна операция изменения. Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Системы счисления
Логический в десятичный Конвертация значения из логического в десятичный формат. Текстовое представление переводится в значения 0 или 1. Таким образом, 'TRUE' хранится как 1 и 'FALSE' хранится как 0. Все значения сопоставляются чувствительным к регистру способом. В данное время распознаются значения для:
TRUE - true, t, yes, y, on, up, running, enabled, available, ok, master
FALSE - false, f, no, n, off, down, unused, disabled, unavailable, err, slave
Кроме того, любое ненулевое значение считается TRUE, нулевое считается FALSE.
Следующие значения поддерживаются начиная с 4.0.0: ok, master, err, slave.
Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Восьмеричное в десятичное Конвертация значения из восьмеричного в десятичный формат. Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Шестнадцатеричное в десятичное Конвертация значения из шестнадцатеричного в десятичный формат. Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Пользовательские скрипты
Javascript Введите код JavaScript в блок, который появляется при нажатии в поле параметра или на иконку карандаша.
Обратите внимание, что доступная длина JavaScript зависит от используемой базы данных.
Для получения дополнительной информации см. : Предобработка Javascript.
Валидация
По диапазону Определите диапазон, в котором должно находиться значение, указав минимальное/максимальное значения (включительно).
Допускаются числовые значения (включая любое количество цифр, опционально десятичную часть и экспоненциальную часть, отрицательные значения). Можно использовать пользовательские макросы и низкоуровневые макросы обнаружения. Минимальное значение должно быть меньше максимального.
Должно существовать хотя бы одно значение.
Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Соответствует регулярному выражению Укажите регулярное выражение, которому должно соответствовать значение.
Если установлен флажок Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Не совпадает с регулярным выражением Укажите регулярное выражение, которому значение не должно соответствовать.
Например. Error:(.*?)\.
Если вы установите флажок Другое при ошибке, этого появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо задать указанное сообщение об ошибке.
Проверка на ошибку в JSON Проверяется, нет ли сообщения об ошибке на уровне приложения в JSONpath. Обработка будет остановлена в случае положительного результата (сообщение присутствует); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Об ошибке не будет сообщено в случае неудачного анализа некорректного JSON.
Если вы установите флажок Другое при ошибке, этого появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо задать указанное сообщение об ошибке.
Проверьте на наличие ошибок в XML Проверяется, нет ли сообщения об ошибке на уровне приложения в xpath. Обработка будет остановлена в случае положительного результата (сообщение присутствует); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки.
Об ошибке не будет сообщено в случае сбоя при разборе недопустимого XML. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Если вы установите флажок Другое при ошибке, этого появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо задать указанное сообщение об ошибке.
Проверьте на ошибку при использоании регулярного выражения Проверяется, нет ли сообщения об ошибке на уровне приложения в регулярном выражении. Об ошибке не будет сообщено в случае сбоя при разборе недопустимого XML. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Параметры:
шаблон - регулярное выражение
вывод - шаблон форматирования вывода. Управлящая последовательность \N (где N = 1… 9) заменяется N-нной совпадающей группой. Экранирующая последовательность \0 заменяется соответствующим текстом.
Если вы установите флажок Другое при ошибке, появится возможность указать пользовательские параметры обработки ошибок: либо сбросить значение, либо задать указанное значение, либо установить указанное сообщение об ошибке.
Троттлинг
Отбрасывать не изменившееся Отбросить зачение, если оно не изменилось.
Если значение отбрасывается, оно не сохраняется в базе данных, и Zabbix сервер не знает, что это значение было получено. Выражения триггера не будут оцениваться, в результате не будет созданы/закрыты проблемы для связанных триггеров. Функции триггера будут работать только на основе данных, которые фактически сохранены в базе данных. Поскольку тренды строятся на основе данных в базе данных, если в течение часа не сохраняются значения, то для этого часа также не будет данных о трендах.
Для элемента можно указать только один параметр троттлинга.
Отбрасывать не изменившееся с периодическим контролем Отбросить зачение, если оно не изменилось в течние определенного периода (в секундах).
Поддерживаются положительные целые значения для указания секунд (минимум - 1 секунда). В этом поле можно использовать суффиксы времени (например, 30 с, 1 м, 2 ч, 1 д). В этом поле можно использовать пользовательские макросы и макросы низкоуровневого обнаружения.
Если значение отбрасывается, оно не сохраняется в базе данных, и Zabbix сервер не знает, что это значение было получено. Выражения триггера не будут оцениваться, в результате не будет созданы/закрыты проблемы для связанных триггеров. Функции триггера будут работать только на основе данных, которые фактически сохранены в базе данных. Поскольку тренды строятся на основе данных в базе данных, если в течение часа не сохраняются значения, то для этого часа также не будет данных о трендах.
Для элемента можно указать только один параметр троттлинга.
Prometheus
Шаблон Prometheus Используйте заданный запрос для извлечения необходимых данных из метрик Prometheus
Подробнее: проверки Prometheus.
Prometheus в JSON Преобразуйте необходимые метрики Prometheus в JSON.
Подробнее: проверки Prometheus.

Для шагов предобработки Изменение и Троттлингтребуется предыдущее значение для расчета/сравнения с новым значением. Предыдущие значения обрабатываются менеджером предварительной обработки и сбрасываются при изменении конфигурации шагов предварительной обработки или при перезапуске Zabbix сервера/прокси. В результате сброса предыдущего значения:

  • для шагов Простое изменение, Изменение в секунду - следующее значение будет проигнорировано, поскольку не существует предыдущего значения, для которого рассчитывается изменение;
  • для шагов Отбрасывать не изменившееся, Отбрасывать не изменившееся с периодическим контролем - следующее значение никогда не будет отброшено, даже если оно не изменилось - так как нет значения для сравнения.

Если вы используете пользовательский множитель или хранение значений как Изменение в секунду у элементов данных с типом информации Числовой (целое положительное) и результирующее вычисленное значение в действительности дробное число, тогда вычисленное значение всё же будет считаться приемлемым, однако дробная часть будет обрезана и значение запишется как целое положительное.

Тестирование

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

Предобработку можно протестировать:

  • используя гипотетическое значение
  • используя реальное значение, полученное от узла сети

Каждый шаг предобработки может быть проверен индивидуально, а также все этапы могут быть проверены вместе. Когда вы нажимаете кнопку Тест или Тест всех шагов соответственно в блоке Действия, открывается окно тестирования.

Тестирование гипотетического значения

Параметр Описание
Получить значение с узла сети Если вы хотите проверить гипотетическое значение, оставьте этот флажок неотмеченным.
См. также: Тестирование реального значения.
Значение Введите значение для проверки.
При щелчке в поле параметра или на иконку редактирования откроется новое окно для ввода значения или блока кода.
Время Отображено время получения значения: now (только чтение).
Предыдущее значение Введите предыдущее входное значение для сравнения.
Только для шагов предобработки Изменение и Троттлинг.
Пред. время Введите предыдущее время получения значения для сравнения.
Только для шагов предобработки Изменение и Троттлинг.
Значение по умолчанию основано на значении поля «Интервал обновления» элемента данных (если 1m, то это поле заполняется now-1m). Если ничего не указано или пользователь не имеет доступа к узлу сети, по умолчанию используется значение now-30s.
Макросы Если используются какие-либо макросы, они перечислены вместе со своими значениями. Значения доступны для редактирования в целях тестирования, но изменения будут сохранены только в контексте тестирования.
Конец строки Выберите конец строки для многострочных входящих значений:
LF - последовательность LF (перевод строки)
CRLF - последовательность CRLF (перевод строки и возврат каретки).
Шаги предобработки Перечислены шаги предварительной обработки; результат тестирования отображается для каждого шага после нажатия кнопки Тест.
Если шаг не прошел тестирование, отображается значок ошибки. Описание ошибки отображается при наведении курсора мыши.
В случае, если для шага задано Другое при ошибке и это действие выполнено, сразу после строки шага теста предварительной обработки появляется новая строка, показывающая, какое действие было выполнено и результат этого действия (ошибка или значение).
Результат Конечный результат тестирования этапов предварительной обработки отображается во всех случаях, когда все этапы тестируются вместе (при нажатии кнопки Проверить все шаги).
Также отображается информация о преобразовании типа значения элемента. Например, ''Результат преобразован в Числовое (целое положительное) ''.

Нажмите Тест, чтобы увидеть результат после каждого шага предварительной обработки.

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

Тестирование выполняется Zabbix сервером. Интерфейс отправляет соответствующий запрос на сервер и ждет результата. Запрос содержит входящее значение и этапы предобработки (с раскрытыми пользовательскими макросами). Для шагов Изменение и Троттлинг можно указать необязательное предыдущее значение и время. Сервер отвечает с результатами каждого шага предварительной обработки.

Все технические ошибки или ошибки проверки ввода отображаются в окне ошибок в верхней части окна тестирования.

Тестирование реального значения

Чтобы проверить предобработку с реальным значением:

  • Установите флажок Получить значение с узла сети
  • Введите или проверьте параметры узла сети (адрес узла сети, порт, имя прокси/нет прокси). Эти поля являются контекстно-зависимыми:
 * Значения предварительно заполняются, когда это возможно (например, для элементов, использующих агент, информация будет взята из интерфейса выбранного агента узла сети)
        * Для элементов шаблона значения должны быть заполнены вручную 
        * Поля отключаются, когда они не нужны в контексте типа элемента данных (например, поле //Адрес хоста// отключено для вычисляемых и агрегированных элементов данных, поле //Прокси// отключено для вычисляемых элементов данных).
       * Нажмите //Получить значение и протестировать//, чтобы протестировать шаги предобработки.

Если вы выбрали преобразование значений в форме конфигурации элемента (поле «Отображение значения»), в диалоговом окне проверки элемента появится еще одна строка после окончательного результата, которая называется «Применён результат с преобразованием значений».

Параметры, специфичные для получения реального значения от узла сети:

Параметр Описание
Получить значение с узла сети Установите этот флажок, чтобы получить реальное значение от узла сети.
Адрес хоста Введите адрес узла сети.
Это поле заполняется автоматически для элемента данных узла сети.
Порт Введите порт узла сети.
Это поле заполняется автоматически для элемента данных узла сети.
Прокси Укажите прокси, если хост контролируется прокси.
Это поле заполняется автоматически для элемента данных узла сети (если прокси используется).

Для остальных параметров см. Тестирование гипотетического значения выше.