Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

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

Обзор

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

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

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

Смотрите также: Примеры использования

Настройка

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

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

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

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

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

Тип
Преобразование Описание
Текст
Регулярное выражение Совпадение значения с регулярным выражением <шаблона> и замена значения в соответствии с <выводом>. Регулярное выражение поддерживает извлечение до 10 захваченных групп в \N последовательности. Элемент данных станет неподдерживаемым в случае ошибки при поиске соответствия во входящем значении.
Параметры:
шаблон - регулярное выражение
вывод - шаблон форматирования вывода. \N (где N=1..9) - управляющая последовательность заменяется N-ной совпадающей группой. Управляющая последовательность \0 заменяется совпадающим текстом.
Пожалуйста, обратитесь в разделу регулярных выражений для ознакомления с некоторыми существующими примерами.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Замена Поиск нужной строки и замена её на другую (или пустотой). Все совпадающие строки поиска будут заменены.
Параметры:
строка поиска - строка для поиска и замены, с учетом регистра (обязательно)
замена - строка для замены строки поиска. Строка замены также может быть пустой, что позволяет эффективно удалять строку поиска при ее обнаружении.
Можно использовать управляющие последовательности для поиска или замены разрывов строк, возврата каретки, табуляции и пробелов "\n \r \t \s"; обратную косую черту можно экранировать как "\\", а управляющие последовательности можно экранировать как "\\n". Экранирование разрывов строк, возврата каретки, вкладок выполняется автоматически при низкоуровневом обнаружении.
Обрезка Удаление указанных символов с начала или конца значения.
Обрезка справа Удаление указанных символов с конца значения.
Обрезка слева Удаление указанных символов с начала значения.
Составные данные
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 функционала.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
CSV в JSON Конвертация данных файла CSV в формат JSON.
Для получения дополнительной информации смотрите: Преобразование CSV в JSON.
XML в JSON Конвертация данных в XML формате в JSON.
Для получения дополнительной информации смотрите: Правила сериализации.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Арифметические
Пользовательский множитель Умножение значения на заданное целое или дробное число.
Используйте эту опцию для преобразования полученных значений в КБ, Мбит/сек, и т.д. в Б, Байт/сек. В противном случае Zabbix не сможет корректно подставить префиксы (K, M, G и т.д.).
Обратите внимание, если тип элемента информации Числовой (целое положительное), входящие значения с дробной частью будут обрезаны (т. е. '0,9' станет '0') до применения пользовательского множителя.
Поддерживается научное представление, например, 1e+70 (с версии 2.2); пользовательские макросы и LLD макросы (с версии 4.0); строки, которые включают в себя макросы, например, {#MACRO}e+10, {$MACRO1}e+{$MACRO2}(с версии 5.2.3)
Эти макросы должны раскрываться в целое число или число с плавающей точкой.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Изменение
Простое изменение Вычисление разницы между текущим и предыдущим значениями.
Вычисляется значение-пред_значение, где
значение - текущее значение; пред_значение - ранее полученное значение
Эта опция может быть полезной для измерения постоянно растущих значений. Если текущее значение меньше предыдущего, тогда 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.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Восьмеричное в десятичное Конвертация значения из восьмеричного в десятичный формат.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Шестнадцатеричное в десятичное Конвертация значения из шестнадцатеричного в десятичный формат.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Пользовательские скрипты
Javascript Введите код JavaScript в блоке, который появится при нажатии в поле параметра или на иконку карандаша.
Обратите внимание, что доступная длина JavaScript зависит от используемой базы данных.
Для получения дополнительной информации смотрите: Предобработка Javascript.
Валидация
По диапазону Определите диапазон, в котором должно находиться значение, указав минимальное/максимальное значения (включительно).
Допускаются числовые значения (включая любое количество цифр, опционально десятичную часть и экспоненциальную часть, отрицательные значения). Можно использовать пользовательские макросы и макросы низкоуровневого обнаружения. Минимальное значение должно быть меньше максимального.
Должно существовать хотя бы одно значение.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Соответствует регулярному выражению Укажите регулярное выражение, которому должно соответствовать значение.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Не совпадает с регулярным выражением Укажите регулярное выражение, которому значение не должно соответствовать.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Проверка на ошибку в JSON Проверка, нет ли сообщения об ошибке на уровне приложения в JSONpath. Обработка будет остановлена в случае положительного результата (сообщение присутствует); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Об ошибке не будет сообщено в случае неудачного анализа некорректного JSON.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Проверьте на наличие ошибок в XML Проверка, нет ли сообщения об ошибке на уровне приложения в XPath. Обработка будет остановлена в случае положительного результата (сообщение присутствует); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки.
Об ошибке не будет сообщено в случае сбоя при разборе недопустимого XML. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Проверьте на ошибку при использовании регулярного выражения Проверка, нет ли сообщения об ошибке на уровне приложения в регулярном выражении. Об ошибке не будет сообщено в случае сбоя при разборе недопустимого XML. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Параметры:
шаблон - регулярное выражение
вывод - шаблон форматирования вывода. Управляющая последовательность \N (где N = 1… 9) заменяется N-ной совпадающей группой. Управляющая последовательность \0 заменяется соответствующим текстом.
Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым, и у вас появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке.
Проверка на неподдерживамое значение проверка, имеется ли ошибка в получении значения элемента данных. Обычно, такое приводит к тому что элемент данных становится неподдерживаемым, но вы можете изменить это поведение, указав опции обработки ошибок Другое при ошибке: отбросить значение, задать нужное значение (в этом случае элемент данных останется поддерживаемым и его значение можно будет использовать в триггерах) или задать нужное значение об ошибке. Обратите внимание, что у этого шага предварительной обработки, опция выбора Другое при ошибке обозначена серым цветом и всегда выбрана.
Этот шаг всегда выполняется первым шагом предварительной обработки и размещается над всеми остальными после сохранения изменений в элементе данных item. Этот шаг можно использовать только один раз.
Поддерживается с 5.2.0.
Троттлинг
Отбрасывать не изменившееся Отбросить значение, если оно не изменилось.
Если значение отбрасывается, оно не сохраняется в базе данных, и Zabbix сервер не будет знать, что значение было получено. Выражения триггеров не будут оцениваться, в результате не будет созданы/закрыты проблемы по связанным триггерам. Функции триггеров будут работать только на основе данных, которые фактически сохранены в базу данных. Поскольку динамика изменений строится на основе данных в базе данных, если в течение часа не сохраняются значения, то для этого часа также не будет данных динамики изменений.
Для элемента данных можно указать только один параметр троттлинга.
Обратите внимание, имеется вероятность что элементы данных, которые наблюдаются Zabbix прокси, которые имеют очень маленькие различия значений (менее чем 0.000001) должным образом не отбрасываются прокси, однако, сохраняются в базу данных с таким же значением, если база данных Zabbix сервера не обновлена.
Отбрасывать не изменившееся с периодическим контролем Отбросить значение, если оно не изменилось в течение заданного периода (в секундах).
Поддерживаются положительные целые значения для секунд (минимально - 1 секунда). В этом поле можно использовать суффиксы времени (такие как, 30s, 1m, 2h, 1d). В этом поле можно использовать пользовательские макросы и макросы низкоуровневого обнаружения.
Если значение отбрасывается, оно не сохраняется в базе данных, и Zabbix сервер не будет знать, что это значение было получено. Выражения триггеров не будут оцениваться, в результате не будет созданы/закрыты проблемы по связанным триггерам. Функции триггеров будут работать только на основе данных, которые фактически сохранены в базе данных. Поскольку динамика изменения строится на основе данных в базе данных, если в течение часа не сохраняются значения, то для этого часа также не будет данных о динамики изменении.
Для элемента данных можно указать только один параметр троттлинга.
Prometheus
Шаблон Prometheus Использование заданного запроса для извлечения необходимых данных с метрик Prometheus.
Обратитесь к проверкам Prometheus для получения более подробных сведений.
Prometheus в JSON Преобразование необходимые Prometheus метрики в JSON.
Обратитесь к проверкам Prometheus для получения более подробных сведений.

Для шагов предобработки изменения и троттлинга Zabbix требуется помнить предыдущее значение для расчета/сравнения с новым значением. Такие предыдущие значения обрабатываются менеджером предварительной обработки. Если Zabbix сервер или прокси перезапускаются или меняются каким-либо образом шаги предварительной обработки, последнее значение соответствующего элемента данных сбрасывается, в результате:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тестирование реальных значений

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

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

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

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

Параметр Описание
Получить значение с узла сети Выберите эту опцию, чтобы получить реальное значение от узла сети.
Адрес узла сети Введите адрес узла сети.
Это поле заполняется автоматически для элемента данных узла сети.
Порт Введите порт узла сети.
Это поле заполняется автоматически для элемента данных узла сети.
Дополнительные поля для SNMP интерфейсов
(Версия SNMP, SNMP community, Имя контекста и т.д.)
Смотрите Настройка SNMP мониторинга для получения дополнительных сведений о настройке SNMP интерфейса (v1, v2 и v3).
Эти поля автоматически заполняются с интерфейса узла сети, которому принадлежит элемент данных.
Прокси Укажите прокси, если узел сети наблюдается через прокси.
Это поле заполняется автоматически для элемента данных узла сети (если прокси используется).

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