Предварительная обработка позволяет применять преобразования к полученным значениям элементов данных перед сохранением их в базе данных. Эти преобразования/шаги предобработки выполняются Zabbix сервером или прокси (если элементы данных отслеживаются через прокси).
Этот функционал поддерживает множество вариантов использования, таких как:
Для элемента данных можно настроить один или несколько шагов предварительной обработки. Эти шаги выполняются в том порядке, в котором они настроены.
Если шаг предварительной обработки завершается неудачей, элемент данных станет неподдерживаемым. Этого можно избежать с помощью пользовательской обработки ошибок с использованием параметра Другое при ошибке (доступной для большинства преобразований), что позволяет вам отбрасывать значения или устанавливать пользовательские значения.
Для элементов данных типа «журнал» метаданные журнала (без значения) всегда будут сбрасывать неподдерживаемое состояние элемента данных и снова делать элемент данных поддерживаемым. Это происходит, даже если первоначальная ошибка произошла после получения значения журнала от агента.
Все значения, передаваемые в предварительную обработку, изначально рассматриваются как строки. Преобразование в требуемый тип значения (как определено в конфигурации элемента данных) выполняется в конце конвейера предобработки. Однако, определённые шаги предварительной обработки могут инициировать более ранние преобразования, если это необходимо. Подробную техническую информацию смотрите в разделе Подробности предварительной обработки.
Чтобы убедиться, что ваша конфигурация предварительной обработки работает так, как ожидается, можно её протестировать.
Смотрите также: Примеры предварительной обработки
Шаги предварительной обработки определяются на вкладке Предобработка (Preprocessing) диалога настройки элемента данных.
Нажмите Добавить (Add), чтобы выбрать поддерживаемое преобразование.
Когда определён хотя бы один шаг предварительной обработки, в нижней части вкладки отображается поле Тип информации (Type of information). При необходимости можно изменить тип информации, не покидая вкладку Предобработка. Подробное описание параметров смотрите в разделе Создание элемента данных.
Все поддерживаемые преобразования перечислены ниже. Нажмите на имя преобразования, чтобы увидеть полную информацию о нём.
Имя | Описание | Тип |
---|---|---|
Регулярное выражение | Сопоставление значения с регулярным выражением и замена требуемым выводом. | Текст |
Замена | Нахождение искомой строки и замена её на другую (или на пустую строку). | |
Обрезать | Удаление указанных символов с начала или конца значения. | |
Обрезать справа | Удаление указанных символов с конца значения. | |
Обрезать слева | Удаление указанных символов с начала значения. | |
XML XPath | Извлечение значения или фрагмента из XML-данных с использованием функционала XPath. | Составные данные |
JSON Path | Извлечение значения или фрагмента из данных JSON с использованием функционала JSONPath. | |
CSV в JSON | Конвертация данных файла CSV в формат JSON. | |
XML в JSON | Конвертация данных из формата XML в JSON. | |
Значение SNMP walk | Извлечение значения по указанному OID или имени MIB и применение параметров форматирования. | SNMP |
SNMP walk в JSON | Преобразование значений SNMP в JSON. | |
SNMP get значение | Применение параметров форматирования к значению SNMP get. | |
Пользовательский множитель | Умножение значения на заданное целое число или число с плавающей точкой. | Арифметические |
Простое изменение | Вычисление разницы между текущим и предыдущим значениями. | Изменение |
Изменение в секунду | Вычисление скорости изменения значений (разница между текущим и предыдущим значениями) за секунду. | |
Логический в десятичный | Конвертация значения из логического в десятичный формат. | Системы счисления |
Восьмеричное в десятичное | Конвертация значения из восьмеричного в десятичный формат. | |
Шестнадцатеричное в десятичное | Конвертация значения из шестнадцатеричного в десятичный формат. | |
JavaScript | Ввод кода JavaScript. | Пользовательские скрипты |
По диапазону | Определение диапазона, в котором должно находиться значение. | Валидация |
Соответствие регулярному выражению | Указание регулярного выражения, которому должно соответствовать значение. | |
Не совпадает с регулярным выражением | Указание регулярного выражения, которому не должно соответствовать значение. | |
Проверка на ошибку в JSON | Проверка на наличие сообщения об ошибке уровня приложения, расположенного в JSONPath. | |
Проверка на ошибку в XML | Проверка на наличие сообщения об ошибке уровня приложения, расположенного в XPath. | |
Проверка на ошибки с использованием регулярного выражения | Проверка на наличие сообщений об ошибке уровня приложения с использованием регулярного выражения. | |
Проверка на неподдерживаемое значение | Проверка того, что не удалось извлечь значение элемента данных. | |
Отбрасывать не изменившееся | Отбросить значение, если оно не изменилось. | Троттлинг |
Отбрасывать не изменившееся с периодическим контролем | Отбросить значение, если оно не изменилось в течение заданного периода. | |
Шаблон Prometheus | Использование заданного запроса для извлечения необходимых данных из метрик Prometheus | Prometheus |
Prometheus в JSON | Преобразование необходимых метрик Prometheus в JSON. |
Обратите внимание, что для шагов предварительной обработки Изменение и Троттлинг Zabbix должен помнить предыдущее значение для расчёта/сравнения с новым значением. Эти предыдущие значения обрабатываются менеджером предварительной обработки. Если сервер Zabbix или прокси перезапускается или вносятся какие-либо изменения в шаги предварительной обработки, последнее значение соответствующего элемента данных сбрасывается, в результате:
Сопоставить значение с регулярным выражением и заменить в соответствии с требуемым выводом.
Параметры:
Комментарии:
Найти искомую строку и заменить её на другую (или на пустую строку).
Параметры:
Комментарии:
Удалить указанные символы с начала и конца значения.
Удалить указанные символы с конца значения.
Удалить указанные символы с начала значения.
Извлечь значение или фрагмент из данных XML с использованием функционала XPath.
Комментарии:
Примеры:
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 с использованием функционала JSONPath.
Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Сконвертировать данные файла CSV в формат JSON.
Для получения дополнительной информации смотрите: Преобразование CSV в JSON.
Сконвертировать данные в формате XML в JSON.
Для получения дополнительной информации смотрите: Правила сериализации.
Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Извлечь значение по указанному OID или имени MIB и применить параметры форматирования:
' '
заменяются на ':'
);Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Преобразовать значения SNMP в JSON.
Укажите имя поля в JSON и соответствующий путь SNMP OID. Значения полей будут заполнены значениями в указанном пути SNMP OID.
Комментарии:
Применить параметры форматирования к SNMP get значение:
' '
заменяются на ':'
);Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Умножить значение на указанное целое число или значение с плавающей точкой.
Комментарии:
1e+70
; пользовательские макросы и LLD макросы; строки, которые включают в себя макросы, например: {#MACRO}e+10
, {$MACRO1}e+{$MACRO2}
. Эти макросы должны раскрываться в целое число или число с плавающей точкой.Вычислить разницу между текущим и предыдущим значениями.
Комментарии:
Вычислить скорость изменения значений (разница между текущим и предыдущим значениями) за секунду.
Комментарии:
Преобразовать значение из логического формата в десятичный.
Комментарии:
Преобразовать значение из восьмеричного формата в десятичный.
Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Преобразовать значение из шестнадцатеричного формата в десятичный.
Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Введите код JavaScript в модальном редакторе, который открывается при нажатии на поле параметра или на значок карандаша рядом с ним.
Комментарии:
Определить диапазон, в котором должно находиться значение, указав минимальное/максимальное значения (включительно).
Комментарии:
Указать регулярное выражение, которому должно соответствовать значение.
Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Указать регулярное выражение, которому значение не должно соответствовать.
Если выбрана опция Другое при ошибке, можно указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.
Проверить, нет ли сообщения об ошибке на уровне приложения в JSONPath. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки.
Комментарии:
Проверить, нет ли сообщения об ошибке на уровне приложения в XPath. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки.
Комментарии:
Проверить, нет ли сообщения об ошибке на уровне приложения с помощью регулярного выражения. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки.
Параметры:
Комментарии:
Проверить факт того, что не удалось извлечь значение элемента данных. Укажите, как следует обрабатывать ошибку, на основе проверки возвращённого сообщения об ошибке.
Параметры:
Комментарии:
Отбросить значение, если оно не изменилось.
Комментарии:
Отбросить значение, если оно не изменилось в течение заданного периода (в секундах).
Комментарии:
Использовать заданный запрос для извлечения необходимых данных из метрик Prometheus.
Обратитесь к проверкам Prometheus для получения более подробных сведений.
Преобразовать необходимые метрики Prometheus в JSON.
Обратитесь к проверкам Prometheus для получения более подробных сведений.
Пользовательские макросы и пользовательские макросы с контекстом поддерживаются в:
Контекст макроса игнорируется, когда макрос заменяется своим значением. Значение макроса подставляется в код как есть, без возможности добавления дополнительного экранирования до помещения значения в код JavaScript. Обратите внимание, что в некоторых случаях это может привести к ошибкам JavaScript.
Смотрите тестирование предварительной обработки.