[comment]: # translation:outdated

[comment]: # ({cd1d3c06-cd1d3c06})
# 2 Предобработка значений элементов данных

[comment]: # ({/cd1d3c06-cd1d3c06})

[comment]: # ({d05960af-cb2c0d06})
#### Обзор

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

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

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

Смотрите также: [Примеры использования](/manual/config/items/preprocessing/examples)

[comment]: # ({/d05960af-cb2c0d06})

[comment]: # ({81de9f65-033c164f})
#### Настройка

Правила предобработки задаются на вкладке **Предобработка** диалога [настройки](/manual/config/items/item#настройка) элемента данных.

![](../../../../assets/en/manual/config/items/item_c.png){width="600"}

::: noteimportant
Элемент данных станет [неподдерживаемым](/manual/config/items/item#неподдерживаемые-элементы-данных) в случае неудачного завершения какого-либо из этапов предварительной обработки, если не была указана пользовательская обработка ошибок с использованием параметра *Другое при ошибке* для поддерживаемых преобразований для того, чтобы отбросить некорректное значение либо выставить в заданное значение.\
\
Для элементов данных log\* метаданные журнала (без значения) всегда сбрасывают состояние неподдерживаемого элемента и элемент данных снова становится поддерживаемым, даже если изначальная ошибка произошла после получения значения из журнала от агента.
:::

[Пользовательские макросы](/manual/config/macros/user_macros) и пользовательские макросы с контекстом поддерживаются в параметрах предварительной обработки значения элемента данных, в том числе в коде JavaScript.

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

|Тип|<|<|
|-|----------|----------------------------------------|
| |*Преобразование*|Описание|
|Текст|<|<|
| |*Регулярное выражение*|Совпадение значения с регулярным выражением <шаблона> и замена значения в соответствии с <выводом>. Регулярное выражение поддерживает извлечение до 10 захваченных групп в \\N последовательности. Элемент данных станет неподдерживаемым в случае ошибки при поиске соответствия во входящем значении.<br>Параметры:<br>**шаблон** - регулярное выражение<br>**вывод** - шаблон форматирования вывода. \\N (где N=1…9) - управляющая последовательность заменяется N-ой совпадающей группой. Управляющая последовательность \\0 заменяется совпадающим текстом.<br>Пожалуйста, обратитесь к разделу [регулярных выражений](/manual/regular_expressions#пример) для ознакомления с некоторыми существующими примерами.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Замена*|Поиск нужной строки и замена её на другую (или пустотой). Все совпадающие строки поиска будут заменены.<br>Параметры:<br>**строка поиска** - строка для поиска и замены, с учетом регистра (обязательно)<br>**замена** - строка для замены строки поиска. Строка замены также может быть пустой, что позволяет эффективно удалять строку поиска при ее обнаружении.<br>Можно использовать управляющие последовательности для поиска или замены разрывов строк, возврата каретки, табуляции и пробелов "\\n \\r \\t \\s"; обратную косую черту можно экранировать как "\\\\", а управляющие последовательности можно экранировать как "\\\\n". Экранирование разрывов строк, возвратов каретки, табуляций выполняется автоматически при низкоуровневом обнаружении.|
|^|*Обрезка*|Удаление указанных символов с начала или конца значения.|
|^|*Обрезка справа*|Удаление указанных символов с конца значения.|
|^|*Обрезка слева*|Удаление указанных символов с начала значения.|
|Составные данные|<|<|
|<|*XML XPath*|Извлечение значения или фрагмента из данных XML с использованием функционала XPath.<br>Чтобы эта опция работала, Zabbix сервер должен быть скомпилирован с поддержкой libxml.<br>Примеры:<br>`number(/document/item/value)` извлечёт `10` из `<document><item><value>10</value></item></document>`<br>`number(/document/item/@attribute)` извлечёт `10` из `<document><item attribute="10"></item></document>`<br>`/document/item` извлечёт `<item><value>10</value></item>` из `<document><item><value>10</value></item></document>`<br>Обратите внимание на то, что пространства имён не поддерживаются.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*JSON Path*|Извлечение значения или фрагмента из данных JSON с использованием [функционала JSONPath](/manual/config/items/preprocessing/jsonpath_functionality).<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*CSV в JSON*|Конвертация данных файла CSV в формат JSON.<br>Для получения дополнительной информации смотрите: [Преобразование CSV в JSON](/manual/config/items/preprocessing/csv_to_json#обработка-заголовка).|
|^|*XML в JSON*|Конвертация данных в формате XML в JSON.<br>Для получения дополнительной информации смотрите: [Правила сериализации](/manual/config/items/preprocessing/javascript/javascript_objects#правила-сериализации).<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|SNMP|<|<|
| |*Значение SNMP walk*|Извлечение значения по указанному имени OID/MIB и использование варианта форматирования:<br>**Без изменений** - возврат строки в шестнадцатеричном формате как неэкранированной;<br>**UTF-8 из hex-STRING** - преобразование строки из шестнадцатеричного формата в UTF-8;<br>**MAC из hex-STRING** - валидация строки в шестнадцатеричном формате как MAC-адреса и возврат надлежащей строки MAC-адреса (с заменой `' '` на `':'`);<br>**Целое число из BITS** - преобразование первых 8 байтов битовой строки, выраженной как последовательность шестнадцатеричных символов (напр., "1A 2B 3C 4D"), в 64-битное целое положительное число. В битовых строках длиннее 8 байтов, последовательные байты игнорируются. <br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
| |*SNMP walk в JSON*|Преобразование значений SNMP в JSON. Укажите название поля в JSON и соответствующий путь SNMP OID. Поля будут заполнены значениями из указанного пути SNMP OID.<br>Этот шаг предварительной обработки можно использовать для [обнаружения SNMP OID](/manual/discovery/low_level_discovery/examples/snmp_oids_walk).<br>Возможности форматирования значений такие же, как и для *Значение SNMP walk*.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|Арифметические|<|<|
| |*Пользовательский множитель*|Умножение значения на заданное целое или дробное число.<br>Используйте эту опцию для преобразования полученных значений в КБ, Мбит/сек, и т.д. в Б, Байт/сек. В противном случае Zabbix не сможет корректно подставить [префиксы](/manual/appendix/suffixes) (K, M, G и т.д.).<br>*Обратите внимание*, если тип элемента информации *Числовой (целое положительное)*, входящие значения с дробной частью будут обрезаны (т. е. '0,9' станет '0') до применения пользовательского множителя.<br>Поддерживается научное представление, например, `1e+70`  (с версии 2.2); пользовательские макросы и LLD макросы (с версии 4.0); строки, которые включают в себя макросы, например: `{#MACRO}e+10`, `{$MACRO1}e+{$MACRO2}`(с версии 5.2.3)<br>Эти макросы должны раскрываться в целое число или число с плавающей точкой.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|Изменение|<|<|
| |*Простое изменение*|Вычисление разницы между текущим и предыдущим значениями.<br>Вычисляется **значение**-**пред\_значение**, где<br>*значение* - текущее значение; *пред\_значение* - предыдущее полученное значение.<br>Эта опция может быть полезной для измерения постоянно растущих значений. Если текущее значение меньше предыдущего, тогда Zabbix отбрасывает это изменение (ничего не записывает) и ждёт следующего значения.<br>На один элемент данных разрешена только одна операция изменения.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Изменение в секунду*|Вычисление скорости изменения значений (разница между текущим и предыдущим значениями) за секунду.<br>Вычисляется следующим образом: (**значение**-**пред\_значение**)/(**время**-**пред\_время**), где<br>*значение* - текущее значение; *пред\_значение* - предыдущее полученное значение; *время* - текущий штамп времени; *пред\_время* - штамп времени предыдущего значения.<br>Эта настройка крайне полезна при получении скорости в секунду в случае постоянно увеличивающихся значений. Если текущее значение меньше, чем предыдущее значение, Zabbix отбрасывает эту разницу (ничего не записывает) и ждёт следующее значение. Такое поведение помогает корректно работать, например, с переполнением 32-битных счетчиков SNMP.<br>*Обратите внимание*: Так как результатом этого вычисления может быть число с плавающей точкой, рекомендуется указать 'Тип информации' значением *Числовой (с плавающей точкой)*, даже если входящие значения - целые числа. Этот совет особенно актуален для маленьких чисел, где дробная часть имеет значение. В случае если числа с плавающей точкой очень большие и могут превысить длину поля 'числа с плавающей точкой', всё значение может быть утеряно - в таком случае предлагается использовать тип *Числовой (целое положительное)*, это отбросит только дробную часть.<br>На один элемент данных разрешена только одна операция изменения.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|Системы счисления|<|<|
| |*Логический в десятичный*|Конвертация значения из логического в десятичный формат. Текстовое представление значения переводится в значения 0 или 1. Таким образом, 'TRUE' сохранится как 1 и 'FALSE' сохранится как 0. Во всех сравнениях регистр символов не учитывается. В данное время распознаются значения для:<br>*TRUE* - true, t, yes, y, on, up, running, enabled, available, ok, master<br>*FALSE* - false, f, no, n, off, down, unused, disabled, unavailable, err, slave<br>Кроме того, любое ненулевое числовое значение считается TRUE, нулевое считается FALSE.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Восьмеричное в десятичное*|Конвертация значения из восьмеричного в десятичный формат.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Шестнадцатеричное в десятичное*|Конвертация значения из шестнадцатеричного в десятичный формат.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|Пользовательские скрипты|<|<|
| |*Javascript*|Введите код JavaScript в блоке, который появится при нажатии в поле параметра или на иконку карандаша.<br>Обратите внимание, что доступная длина JavaScript зависит от [используемой базы данных](/manual/config/items/item#ограничения-пользовательских-скриптов).<br>Для получения дополнительной информации смотрите: [Предобработка Javascript](/manual/config/items/preprocessing/javascript).|
|Валидация|<|<|
| |*По диапазону*|Определите диапазон, в котором должно находиться значение, указав минимальное/максимальное значения (включительно).<br>Допускаются числовые значения (включая любое количество цифр, опционально десятичную часть и экспоненциальную часть, отрицательные значения). Можно использовать пользовательские макросы и макросы низкоуровневого обнаружения. Минимальное значение должно быть меньше максимального.<br>Должно существовать хотя бы одно значение.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Соответствует регулярному выражению*|Укажите регулярное выражение, которому должно соответствовать значение.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Не совпадает с регулярным выражением*|Укажите регулярное выражение, которому значение не должно соответствовать.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Проверка на ошибку в JSON*|Проверка, нет ли сообщения об ошибке на уровне приложения в JSONPath. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки. Учтите, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.<br>Об ошибке не будет сообщено в случае неудачного анализа некорректного JSON.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Проверка на наличие ошибок в XML*|Проверка, нет ли сообщения об ошибке на уровне приложения в XPath. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки. Учтите, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.<br>Об ошибке не будет сообщено в случае сбоя при анализе некорректного XML.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Проверка на ошибку при использовании регулярного выражения*|Проверка, нет ли сообщения об ошибке на уровне приложения при использовании регулярного выражения. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого этапа предварительной обработки. Учтите, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.<br>Параметры:<br>**шаблон** - регулярное выражение<br>**вывод** - шаблон форматирования вывода. Управляющая последовательность \\N (где N = 1… 9) заменяется N-ой совпадающей группой. Управляющая последовательность \\0 заменяется соответствующим текстом.<br>Если выбрана опция *Другое при ошибке*, у вас появится возможность указать пользовательские варианты обработки ошибок: либо отбросить значение, либо задать нужное значение, либо задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение.|
|^|*Проверка на неподдерживамое значение*|Проверка, имеется ли ошибка в получении значения элемента данных. Обычно такое приводит к тому, что элемент данных становится неподдерживаемым, но вы можете изменить это поведение, указав варианты обработки ошибок *Другое при ошибке*: отбросить значение, задать нужное значение (в этом случае его значение можно будет использовать в триггерах) или задать нужное сообщение об ошибке. В случае неудачного завершения шага предобработки элемент данных не станет неподдерживаемым, если выбран вариант отбросить значение или выставить в указанное значение. Учтите, что у этого шага предварительной обработки, опция *Другое при ошибке* обозначена серым цветом и всегда выбрана.<br>Этот шаг всегда выполняется первым шагом предварительной обработки и размещается над всеми остальными после сохранения изменений в элементе данных. Этот шаг можно использовать только один раз.<br>Поддерживается с 5.2.0.|
|Троттлинг|<|<|
| |*Отбрасывать не изменившееся*|Отбросить значение, если оно не изменилось.<br>Если значение отбрасывается, оно не сохраняется в базе данных и Zabbix сервер не будет знать, что значение было получено. Выражения триггеров не будут пересчитываться, в результате не будут созданы/закрыты проблемы по связанным триггерам. Функции триггеров будут работать только на основе данных, которые фактически сохраняются в базу данных. Поскольку динамика изменений строится на основе данных в базе данных, если в течение часа не сохраняются значения, то для этого часа также не будет данных динамики изменений.<br>Для элемента данных можно указать только один параметр троттлинга.<br>Обратите внимание, что в случае очень маленькой (менее 0.000001) разницы между значениями элементов данных, которые наблюдаются Zabbix прокси, значения могут не отброситься должным образом, а сохраниться в базе данных как такое же значение, если база данных Zabbix сервера [не обновлена](https://www.zabbix.com/documentation/5.0/ru/manual/installation/upgrade_notes_500#включение-расширенного-диапазона-числовых-значений-с-плавающей-точкой).|
|^|*Отбрасывать не изменившееся с периодическим контролем*|Отбросить значение, если оно не изменилось в течение заданного периода (в секундах).<br>Поддерживаются положительные целые значения для секунд (минимально - 1 секунда). В этом поле можно использовать суффиксы времени (такие как 30s, 1m, 2h, 1d). В этом поле можно использовать пользовательские макросы и макросы низкоуровневого обнаружения.<br>Если значение отбрасывается, оно не сохраняется в базе данных и Zabbix сервер не будет знать, что это значение было получено. Выражения триггеров не будут пересчитываться, в результате не будут созданы/закрыты проблемы по связанным триггерам. Функции триггеров будут работать только на основе данных, которые фактически сохраняются в базе данных. Поскольку динамика изменения строится на основе данных в базе данных, если в течение часа не сохраняются значения, то для этого часа также не будет данных о динамике изменений.<br>Для элемента данных можно указать только один параметр троттлинга.<br>Обратите внимание, что в случае очень маленькой (менее 0.000001) разницы между значениями элементов данных, которые наблюдаются Zabbix прокси, значения могут не отброситься должным образом, а сохраниться в базе данных как такое же значение, если база данных Zabbix сервера [не обновлена](https://www.zabbix.com/documentation/5.0/ru/manual/installation/upgrade_notes_500#включение-расширенного-диапазона-числовых-значений-с-плавающей-точкой).|
|Prometheus|<|<|
| |*Шаблон Prometheus*|Использование заданного запроса для извлечения необходимых данных из метрик Prometheus.<br>Обратитесь к [проверкам Prometheus](/manual/config/items/itemtypes/prometheus) для получения более подробных сведений.|
|^|*Prometheus в JSON*|Преобразование необходимых метрик Prometheus в JSON.<br>Обратитесь к [проверкам Prometheus](/manual/config/items/itemtypes/prometheus) для получения более подробных сведений.|

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

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


:::

Параметр *Тип информации* элемента данных отобразится внизу вкладки, если задан хотя бы один шаг предварительной обработки. При необходимости можно изменить тип информации, не покидая вкладку *Предобработка*. Смотрите [Создание элемента данных](/manual/config/items/item) для получения более подробных сведений о параметрах.

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

[comment]: # ({/81de9f65-033c164f})

[comment]: # ({ad67af50-ad67af50})
#### Тестирование

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

![](../../../../assets/en/manual/config/items/test_item_steps.png){width="600"}

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

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

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

[comment]: # ({/ad67af50-ad67af50})

[comment]: # ({37c99c3f-45423233})
##### Тестирование гипотетического значения

![](../../../../assets/en/manual/config/items/test_item_p.png){width="600"}

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

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

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

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

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

[comment]: # ({/37c99c3f-45423233})

[comment]: # ({d86fc752-43637da5})
##### Тестирование реального значения

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

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

![](../../../../assets/en/manual/config/items/test_item_p2.png){width="600"}

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

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

|Параметр|Описание|
|--|--------|
|*Получить значение с узла сети*|Выберите эту опцию, чтобы получить реальное значение от узла сети.|
|*Адрес узла сети*|Введите адрес узла сети.<br>Это поле заполняется автоматически для элемента данных узла сети.|
|*Порт*|Введите порт узла сети.<br>Это поле заполняется автоматически для элемента данных узла сети.|
|*Дополнительные поля для SNMP интерфейсов<br>(Версия SNMP, SNMP community, Имя контекста и т.д.)*|Смотрите [Настройка SNMP мониторинга](/manual/config/items/itemtypes/snmp#шаг-2) для получения дополнительных сведений о настройке SNMP интерфейса (v1, v2 и v3).<br>Эти поля автоматически заполняются с интерфейса узла сети, которому принадлежит элемент данных.|
|*Прокси*|Укажите прокси, если узел сети наблюдается через прокси.<br>Это поле заполняется автоматически сервером прокси данного узла сети (если прокси используется).|

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

[comment]: # ({/d86fc752-43637da5})
