Zabbix Documentation 4.2

3.04.04.45.0 (current)| In development:5.2 (devel)| Unsupported:1.82.02.22.43.23.44.2Guidelines

User Tools

Site Tools


ru:manual:discovery:low_level_discovery

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ru:manual:discovery:low_level_discovery [2018/08/21 09:47]
dotneft
ru:manual:discovery:low_level_discovery [2020/01/06 05:41] (current)
dotneft
Line 10: Line 10:
 Сначала,​ пользователь создает правило обнаружения в "​Настройка"​ -> "​Шаблоны"​ -> колонка "​Обнаружение"​. Правило обнаружения состоит из (1) элемента данных,​ который осуществляет обнаружение необходимых объектов (например,​ файловые системы или сетевые интерфейсы) и (2) прототипов элементов данных,​ триггеров и графиков,​ которые должны быть созданы на основании полученных значений этого элемента данных. Сначала,​ пользователь создает правило обнаружения в "​Настройка"​ -> "​Шаблоны"​ -> колонка "​Обнаружение"​. Правило обнаружения состоит из (1) элемента данных,​ который осуществляет обнаружение необходимых объектов (например,​ файловые системы или сетевые интерфейсы) и (2) прототипов элементов данных,​ триггеров и графиков,​ которые должны быть созданы на основании полученных значений этого элемента данных.
  
-Элемент данных,​ который осуществляет обнаружение необходимых объектов,​ подобен обычным элементам данных,​ которые видны в других местах:​ Zabbix сервер запрашивает у Zabbix агента (или любой другой указанный тип элемента данных) значение этого элемента данных,​ и агент отвечает текстовым значением. Разница в том, что значение,​ которое возвращает агент, должно содержать список обнаруженных объектов в специальном ​JSON формате. Хотя детали этого формата важны только для создателей собственных проверок обнаружения,​ всё же всем необходимо знать, что возвращаемое значение содержит список из пар: макрос -> значение. Например,​ элемент данных "​net.if.discovery"​ может вернуть две пары: "​{#​IFNAME}"​ -> "​lo"​ и "​{#​IFNAME}"​ -> "​eth0"​.+Элемент данных,​ который осуществляет обнаружение необходимых объектов,​ подобен обычным элементам данных,​ которые видны в других местах:​ Zabbix сервер запрашивает у Zabbix агента (или любой другой указанный тип элемента данных) значение этого элемента данных,​ и агент отвечает текстовым значением. Разница в том, что значение,​ которое возвращает агент, должно содержать список обнаруженных объектов в JSON формате. Хотя детали этого формата важны только для создателей собственных проверок обнаружения,​ всё же всем необходимо знать, что возвращаемое значение содержит список из пар: макрос -> значение. Например,​ элемент данных "​net.if.discovery"​ может вернуть две пары: "​{#​IFNAME}"​ -> "​lo"​ и "​{#​IFNAME}"​ -> "​eth0"​.
  
 Эти макросы затем используются в именах,​ ключах и в других полях прототипов,​ которые являются основой для создания реальных элементов данных,​ триггеров и графиков каждому обнаруженному объекту. Смотрите полный список [[:​ru/​manual/​config/​macros/​lld_macros|опций]] по использованию макросов в низкоуровневом обнаружении. Эти макросы затем используются в именах,​ ключах и в других полях прототипов,​ которые являются основой для создания реальных элементов данных,​ триггеров и графиков каждому обнаруженному объекту. Смотрите полный список [[:​ru/​manual/​config/​macros/​lld_macros|опций]] по использованию макросов в низкоуровневом обнаружении.
  
 Когда сервер получает значение элемента данных обнаружения,​ он смотрит на пару макрос -> значение и для каждой пары создает реальные элементы данных,​ триггеров и графиков,​ основанных на их прототипах. В приведенном выше примере с "​net.if.discovery",​ сервер будет создавать один набор элементов данных,​ триггеров и графиков для локального интерфейса "​lo"​ и другой набор для интерфейса "​eth0"​. Когда сервер получает значение элемента данных обнаружения,​ он смотрит на пару макрос -> значение и для каждой пары создает реальные элементы данных,​ триггеров и графиков,​ основанных на их прототипах. В приведенном выше примере с "​net.if.discovery",​ сервер будет создавать один набор элементов данных,​ триггеров и графиков для локального интерфейса "​lo"​ и другой набор для интерфейса "​eth0"​.
 +
 +Обратите внимание,​ что начиная с **Zabbix 4.2**, формат JSON, возвращаемый правилами низкоуровневого обнаружения изменился. Более не ожидается,​ что JSON будет содержать объект %%"​%%data%%"​%%. Низкоуровневое обнаружение теперь принимает обычный JSON, который содержит массив,​ для поддержки новых функций,​ таких как предобработка значений элементов данных и пользовательских путей к значениям макросов низкоуровневого обнаружения в JSON документе.
 +
 +Встроенные ключи обнаружения обновлены и теперь возвращают массивы LLD строк корневым JSON документом. Zabbix автоматически извлечёт макрос и значение,​ если поле массива использует {#​МАКРОС} ключом. Любые новые встроенные проверки обнаружения будут использовать новый синтаксис без %%"​%%data%%"​%% элементов. При обработке значения низкоуровневого обнаружения сначала определяется корень (массив ''​$.''​ или ''​$.data''​).
 +
 +Хотя %%"​%%data%%"​%% элемент удален со всех встроенных элементов данных,​ которые относятся к обнаружению,​ для обратной совместимости Zabbix будет ещё принимать JSON представление с %%"​%%data%%"​%% элементов,​ хотя его использование не рекомендуется. Если JSON содержит объект только с одним %%"​%%data%%"​%% элементом массива,​ тогда этот массив будет автоматически извлечён из содержимого элемента с использованием JSONPath ''​$.data''​. Теперь низкоуровневое обнаружение принимает пользовательские LLD макросы с пользовательским путём, который задается в JSONPath синтаксисе.
 + 
 +<note warning>​В результате изменений описанных выше более новые агенты не будут способны работать с более старыми версиями Zabbix сервера.</​note>​
 +
 +Смотрите также: [[#​обнаруженные_объекты|Обнаруженные объекты]]
  
 === Настройка низкоуровневого обнаружения === === Настройка низкоуровневого обнаружения ===
Line 32: Line 42:
 === Правило обнаружения === === Правило обнаружения ===
  
-Вкладка **Правило обнаружения** содержит общие атрибуты правила обнаружения:​+Диалог правила обнаружения содержит четыре вкладки,​ представляющие,​ слева направо,​ поток данных в процессе обнаружения:​ 
 + 
 +  * //​Правило обнаружения//​ - задает,​ что наиболее важно, встроенный элемент данных или пользовательский скрипт для получения данных обнаружения 
 +  * //​Предобработка//​ - применение некоторой предобработки к обнаруженным данным 
 +  * //LLD макросы//​ - позволяет извлекать некоторые значения макросов,​ чтобы использовать их в обнаруженных элементах данных,​ триггерах и т.п. 
 +  * //​Фильтры//​ - позволяет фильтровать обнаруженные значения 
 + 
 +Вкладка **Правило обнаружения** содержит ​ключ элемента данных,​ который используется для обнаружения (а также некоторые ​общие атрибуты правила обнаружения):
  
-{{manual:​discovery:​low_level_discovery:​lld_rule_fs.png?600|}}+{{manual:​discovery:​low_level_discovery:​lld_rule_fs0.png?600|}}
  
 Все обязательные поля ввода отмечены красной звёздочкой. Все обязательные поля ввода отмечены красной звёздочкой.
Line 40: Line 57:
 ^Параметр^Описание^ ​ ^Параметр^Описание^ ​
 |//​Имя// ​ |Имя правила обнаружения. ​ |  |//​Имя// ​ |Имя правила обнаружения. ​ | 
-|//​Тип// ​ |Тип проверки выполняемого обнаружения;​ должен быть //Zabbix агент//​ или //Zabbix агент (активный)//​ при обнаружении файловых систем. ​ |  +|//​Тип// ​ |Тип проверки выполняемого обнаружения;​ должен быть //Zabbix агент//​ или //Zabbix агент (активный)//​ при обнаружении файловых систем.\\ Правило обнаружения также может быть [[:​ru/​manual/​config/​items/​itemtypes/​dependent_items|зависимым элементом данных]],​ которое зависит от обычного элемента данных. Оно не может зависеть от другого правила обнаружения. Для работы зависимым элементом данных,​ выберите соответствующий тип (//​Зависимый элемент данных//​) и укажите основной элемент данных в '​Основной элемент данных'​ поле. Основной элемент данных должен существовать.  |  
-|//​Ключ// ​ |Элемент данных "​vfs.fs.discovery"​ уже встроен в Zabbix агент ​начиная с версии 2.0 для многих платформах (для получения более детальных сведений смотрите [[ru:​manual:​appendix:​items:​supported_by_platform|список поддерживаемых ключей элементов данных]]),​ который возвращает список файловых систем,​ присутствующих в компьютере,​ и их типы в формате JSON.  | +|//​Ключ// ​ |Элемент данных "​vfs.fs.discovery"​ уже встроен в Zabbix агент для многих платформах (для получения более детальных сведений смотрите [[ru:​manual:​appendix:​items:​supported_by_platform|список поддерживаемых ключей элементов данных]]),​ который возвращает список файловых систем,​ присутствующих в компьютере,​ и их типы в формате JSON.  | 
 |//​Интервал обновления// ​ |Это поле задает как часто Zabbix выполняет обнаружение. В начале,​ когда вы только настраиваете обнаружение файловых систем,​ вы можете указать маленький интервал,​ но как только вы удостоверитесь что всё работает,​ вы можете установить его в 30 минут или более, потому что обычно файловые системы не меняются очень часто.\\ Поддерживаются [[:​ru/​manual/​appendix/​suffixes|суффиксы времени]],​ например 30s, 1m, 2h, 1d, начиная с Zabbix 3.4.0.\\ [[:​ru/​manual/​config/​macros/​usermacros|Пользовательские макросы]] поддерживаются начиная с Zabbix 3.4.0.\\ //​Обратите внимание//:​ Если укажите значение равное '​0',​ элемент данных не будет обрабатываться. Однако,​ если также существует переменный интервал с ненулевым значением,​ элемент данных будет обрабатываться в течении действия переменного интервала.\\ ​ //​Обратите внимание//,​ что уже созданное правило обнаружение можно выполнить незамедлительно нажатием [[#​кнопки_диалога|кнопки]] //​Проверить сейчас//​ .  |  |//​Интервал обновления// ​ |Это поле задает как часто Zabbix выполняет обнаружение. В начале,​ когда вы только настраиваете обнаружение файловых систем,​ вы можете указать маленький интервал,​ но как только вы удостоверитесь что всё работает,​ вы можете установить его в 30 минут или более, потому что обычно файловые системы не меняются очень часто.\\ Поддерживаются [[:​ru/​manual/​appendix/​suffixes|суффиксы времени]],​ например 30s, 1m, 2h, 1d, начиная с Zabbix 3.4.0.\\ [[:​ru/​manual/​config/​macros/​usermacros|Пользовательские макросы]] поддерживаются начиная с Zabbix 3.4.0.\\ //​Обратите внимание//:​ Если укажите значение равное '​0',​ элемент данных не будет обрабатываться. Однако,​ если также существует переменный интервал с ненулевым значением,​ элемент данных будет обрабатываться в течении действия переменного интервала.\\ ​ //​Обратите внимание//,​ что уже созданное правило обнаружение можно выполнить незамедлительно нажатием [[#​кнопки_диалога|кнопки]] //​Проверить сейчас//​ .  | 
 |//​Пользовательские интервалы// ​ |Вы можете создавать пользовательские правила проверки элемента данных:​\\ **Гибкий** - создание исключений из Интервала обновления (интервал с другой частотой обновления)\\ **По расписанию** - создание пользовательского расписания проверки.\\ Для получения более подробной информации смотрите [[ru:​manual:​config:​items:​item:​custom_intervals|Пользовательские интервалы]]. Проверка по расписанию поддерживается начиная с Zabix 3.0.0. ​ |  |//​Пользовательские интервалы// ​ |Вы можете создавать пользовательские правила проверки элемента данных:​\\ **Гибкий** - создание исключений из Интервала обновления (интервал с другой частотой обновления)\\ **По расписанию** - создание пользовательского расписания проверки.\\ Для получения более подробной информации смотрите [[ru:​manual:​config:​items:​item:​custom_intervals|Пользовательские интервалы]]. Проверка по расписанию поддерживается начиная с Zabix 3.0.0. ​ | 
-|//​Период сохранения потерянных ресурсов// ​ |Это поле позволяет вам указать как много дней обнаруженный объект будет храниться (не будет удален),​ как только его состояние обнаружения станет "Не обнаруживается ​более" (мин ​1 час, макс 25 лет).\\ Поддерживаются [[:​ru/​manual/​appendix/​suffixes|суффиксы времени]],​ например 30s, 1m, 2h, 1d, начиная с Zabbix 3.4.0.\\ [[:​ru/​manual/​config/​macros/​usermacros|Пользовательские макросы]] поддерживаются начиная с Zabbix 3.4.0.\\ //​Обратите внимание://​ Если значение равно "​0",​ объекты будут удалены сразу. Использование значения "​0"​ не рекомендуется,​ так как простое ошибочное изменение фильтра может закончится тем, что объект будет удален вместе со всеми данными истории. ​  ​| ​+|//​Период сохранения потерянных ресурсов// ​ |Это поле позволяет вам указать как много дней обнаруженный объект будет храниться (не будет удален),​ как только его состояние обнаружения станет ​%%"%%Более не обнаруживается%%"%% (от 1 часа ​до 25 лет; или %%"​%%0%%"​%%).\\ Поддерживаются [[:​ru/​manual/​appendix/​suffixes|суффиксы времени]],​ например 30s, 1m, 2h, 1d, начиная с Zabbix 3.4.0.\\ [[:​ru/​manual/​config/​macros/​usermacros|Пользовательские макросы]] поддерживаются начиная с Zabbix 3.4.0.\\ //​Обратите внимание://​ Если значение равно ​%%"%%0%%"%%, объекты будут удалены сразу. Использование значения ​%%"%%0%%"%% не рекомендуется,​ так как простое ошибочное изменение фильтра может закончится тем, что объект будет удален вместе со всеми данными истории. ​  ​| ​
 |//​Описание// ​ |Введите описание. ​ |  |//​Описание// ​ |Введите описание. ​ | 
 |//​Состояние// ​ |Если отмечено,​ правило будет обрабатываться. | |//​Состояние// ​ |Если отмечено,​ правило будет обрабатываться. |
-=== Фильтр правила обнаружения === 
  
-Вкладка **Фильтры** ​содержит определения фильтрации ​правила обнаружения:+<​note>​История правил обнаружения ​не сохраняется.</​note>​
  
-{{manual:​discovery:​low_level_discovery:​lld_rule_fs2.png?600|}}+== Предобработка == 
 + 
 +Вкладка **Предобработка** позволяет определять правила преобразования,​ которые применятся к результату обнаружения. В этом шаге возможно одно или несколько преобразований. Преобразования выполняются в том порядке,​ в котором они заданы. Все преобразования выполняются Zabbix сервером. 
 + 
 +{{manual:​discovery:​low_level_discovery:​lld_rule_fs2b.png?​600|}} 
 + 
 +^Тип^Преобразование^Описание^ 
 +|  ||| 
 +^Текст ​ ^^^ 
 +|   ​|//​Регулярное выражение// ​ |Совпадение значения с регулярным выражением <​шаблона>​ и замена значения в соответствии с <​выводом>​. Регулярное выражение поддерживает извлечение до 10 захваченных групп в \N последовательности.\\ Параметры:​\\ **шаблон** - регулярное выражение\\ **вывод** - шаблон форматирования вывода. \N (где N=1..9) - управляющая последовательность заменяется N-нной совпадающей группой. Управляющая последовательность \0 заменяется совпадающим текстом\\ Если вы отметите опцию //​Другое при ошибке//,​ появится возможность задать пользовательскую опцию обработки ошибок:​ либо отбросить значение,​ задать пользовательское значение или задать пользовательское сообщение об ошибке. | 
 +^Структурированные данные ​ ^^^ 
 +|   ​|//​JSONPath// ​ |Путь, который используется для извлечения значения LLD макроса из LLD записи,​ с использованием JSONPath синтаксиса.\\ Например,​ ''​$.foo''​ извлечет %%"​%%bar%%"​%% и %%"​%%baz%%"​%% из этого JSON: ''​[{%%"​%%foo%%"​%%:​%%"​%%bar%%"​%%},​ {%%"​%%foo%%"​%%:​%%"​%%baz%%"​%%}]''​\\ JSONPath можно указывать с использованием представления в виде точек или в представлении со скобками. Представление со скобками необходимо использовать при наличии каких-либо специальных символов и Юникода,​ например,​ ''​$['​юникод + спец. символы #​1'​]['​юнидод + спец.символы #​2'​]''​.\\ Если вы отметите опцию //​Другое при ошибке//,​ появится возможность задать пользовательскую опцию обработки ошибок:​ либо отбросить значение,​ задать пользовательское значение или задать пользовательское сообщение об ошибке.| 
 +^Пользовательские скрипты ​ ^^^ 
 +|   ​|//​Javascript// ​ |Ввод кода JavaScript в этот блок, который появляется при нажатии на поле параметра или на //​Открыть//​.\\ Обратите внимание,​ что доступная длина JavaScript зависит от [[:​ru/​manual/​config/​items/​item##​ограничения_пользовательского_скрипта|используемой базы данных]]. ​ | 
 +^Валидация ​ ^^^ 
 +|   ​|//​Не совпадает с регулярным выражением// ​ |Регулярное выражение,​ которому значение не должно соответствовать.\\ Например,​ ''​%%Error:​(.*?​)\.%%''​\\ Если вы отметите опцию //​Другое при ошибке//,​ появится возможность задать пользовательскую опцию обработки ошибок:​ либо отбросить значение,​ задать пользовательское значение или задать пользовательское сообщение об ошибке. ​ | 
 +|   ​|//​Проверка на ошибку в JSON// ​ |Проверка на наличие сообщения об ошибке на уровне приложения,​ обнаруженной в JSONpath. Остановка обработки,​ если успешно и сообщение не пустое;​ в противном случае продолжение обработки со значением,​ которое было до этого шага обработки. Обратите внимание,​ что эти ошибки внешнего сервиса сообщаются пользователю как есть, без добавления информации шага предобработки.\\ Например,​ ''​$.errors''​. Если получен примерно такой JSON ''​%%{"​errors":"​e1"​}%%'',​ следующий шаг предобработки не будет выполнен. ​   | 
 +^Троттлинг ​ ^^^ 
 +|   ​|//​Отбрасывать не изменившееся с периодическим контролем// ​ |Игнорирование значение,​ если оно не изменилось,​ в течении заданного периода времени (в секундах).\\ Поддерживаются положительные числовые значения,​ которые указывают количество секунд (минимально - 1 секунда). В этом поле можно использовать суффиксы времени (например,​ 30s, 1m, 2h, 1d). В этом поле можно использовать пользовательские макросы и макросы низкоуровневого обнаружения.\\ Для низкоуровневого обнаружения можно указать только одну опцию троттлинга.\\ Например,​ ''​1m''​. Если в это правило передается идентичный текст дважды за 60 секунд,​ этот текст будет отброшен.\\ //​Обратите внимание//:​ Изменение прототипов элементов данных не сбрасывает троттлинг. Троттлинг сбрасывается только,​ когда меняются шаги предобработки. ​ | 
 +^Prometheus ​ ^^^ 
 +|   ​|//​Prometheus в JSON// ​ |Конвертация необходимых Prometheus метрик в JSON.\\ Смотрите [[:​ru/​manual/​config/​items/​itemtypes/​prometheus|проверки Prometheus]] для получения более подробных сведений. ​ | 
 + 
 +Обратите внимание,​ если правило обнаружения применено к узлу сети через шаблон,​ тогда содержимое этой вкладки будет доступно только для чтения. 
 + 
 +== Пользовательские макросы == 
 + 
 +Вкладка **LLD макросы** позволяет указать карту соответствий макросов низкоуровневого обнаружения с пользовательским JSONPath, позволяя извлекать значения макросов обнаружения,​ чтобы использовать их в дальнейшем в обнаруженных элементах данных,​ триггерах и т.п. Обратите внимание,​ это действие применяется к результату обнаружения и предварительной обработке примененной к этому времени (см. выше). 
 + 
 +{{manual:​discovery:​low_level_discovery:​lld_rule_fs0c.png|}} 
 + 
 +^Параметр^Описание^ 
 +|//LLD макрос// ​ |Имя макроса низкоуровневого обнаружения,​ используется следующий синтаксис:​ {#​МАКРОС}. ​ | 
 +|//​JSONPath// ​ |Путь, который используется для извлечения значения LLD макроса из LLD записи,​ с использованием JSONPath синтаксиса.\\ Напримеп,​ ''​$.foo''​ извлечёт %%"​%%bar%%"​%% и %%"​%%baz%%"​%% из этого JSON: ''​[{%%"​%%foo%%"​%%:​%%"​%%bar%%"​%%},​ {%%"​%%foo%%"​%%:​%%"​%%baz%%"​%%}]''​\\ Значения,​ которые извлекаются из заданного JSON пути, используются для замены LLD макросов в полях прототипов элементов данных,​ триггеров и т.п.\\ JSONPath можно указывать с использованием представления в виде точек или в представлении со скобками. Представление со скобками необходимо использовать при наличии каких-либо специальных символов и Юникода,​ например,​ ''​$['​юникод + спец. символы #​1'​]['​юнидод + спец.символы #​2'​]''​. ​ | 
 + 
 +== Фильтр == 
 + 
 +Вкладка **Фильтры** содержит определения фильтрации правила обнаружения,​ позволяя фильтровать значения обнаружения:​ 
 + 
 +{{manual:​discovery:​low_level_discovery:​lld_rule_fs0d.png?600|}}
  
 ^Параметр^Описание^ ^Параметр^Описание^
Line 57: Line 111:
 |//​Фильтры// ​ | Фильтр можно использовать только для генерирования реальных элементов данных,​ триггеров и графиков конкретных файловых систем. Ожидается использование [[https://​ru.wikipedia.org/​wiki/​PCRE|Perl Compatible Regular Expression]] (PCRE). Например,​ если вы заинтересованы только в файловых системах C:, D: и E:, вы можете поместить {#FSNAME} в поле "​Макрос"​ и регулярное выражение <​nowiki>"​^C|^D|^E"</​nowiki>​ в текстовые поля "​Регулярное выражение"​. Фильтрация также возможна по типам файловых систем,​ при использовании макроса {#FSTYPE} (например,​ <​nowiki>"​^ext|^reiserfs"</​nowiki>​) и по типу диска (поддерживается только Windows агентов),​ используя макрос {#​FSDRIVETYPE} ​ (например,​ <​nowiki>"​fixed"</​nowiki>​).\\ Вы можете ввести в поле "​Регулярное выражение"​ регулярное выражение или ссылку на глобальное [[ru:​manual:​regular_expressions|регулярное выражение]].\\ Для проверки регулярного выражения вы можете использовать "grep -E", например:​ <code bash>for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '​^ext|^reiserfs'​ || echo "SKIP: $f"; done</​code>​Макрос {#​FSDRIVETYPE} на Windows поддерживается начиная с Zabbix **3.0.0**.\\ Определение нескольких фильтров поддерживается начиная с **2.4.0**.\\ Обратите внимание,​ что если какой-то макрос из фильтра пропущен в ответе,​ найденный объект будет игнорироваться.\\ Выпадающее меню в фильтре представлены два значения задать,​ которые можно использовать для соответствия регулярному выражению или наоборот,​ отсутствию соответствия. ​ | |//​Фильтры// ​ | Фильтр можно использовать только для генерирования реальных элементов данных,​ триггеров и графиков конкретных файловых систем. Ожидается использование [[https://​ru.wikipedia.org/​wiki/​PCRE|Perl Compatible Regular Expression]] (PCRE). Например,​ если вы заинтересованы только в файловых системах C:, D: и E:, вы можете поместить {#FSNAME} в поле "​Макрос"​ и регулярное выражение <​nowiki>"​^C|^D|^E"</​nowiki>​ в текстовые поля "​Регулярное выражение"​. Фильтрация также возможна по типам файловых систем,​ при использовании макроса {#FSTYPE} (например,​ <​nowiki>"​^ext|^reiserfs"</​nowiki>​) и по типу диска (поддерживается только Windows агентов),​ используя макрос {#​FSDRIVETYPE} ​ (например,​ <​nowiki>"​fixed"</​nowiki>​).\\ Вы можете ввести в поле "​Регулярное выражение"​ регулярное выражение или ссылку на глобальное [[ru:​manual:​regular_expressions|регулярное выражение]].\\ Для проверки регулярного выражения вы можете использовать "grep -E", например:​ <code bash>for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '​^ext|^reiserfs'​ || echo "SKIP: $f"; done</​code>​Макрос {#​FSDRIVETYPE} на Windows поддерживается начиная с Zabbix **3.0.0**.\\ Определение нескольких фильтров поддерживается начиная с **2.4.0**.\\ Обратите внимание,​ что если какой-то макрос из фильтра пропущен в ответе,​ найденный объект будет игнорироваться.\\ Выпадающее меню в фильтре представлены два значения задать,​ которые можно использовать для соответствия регулярному выражению или наоборот,​ отсутствию соответствия. ​ |
  
-<​note ​important>Чтобы обнаружение сработало ​корректно, база данных ​Zabbix в MySQL должна ​быть создана чувствительной к регистру, если ​имена файловых ​систем различаются только по регистру.</​note>​+<​note ​warning>Ошибка или ​опечатка в регулярном выражении, которое используется в LLD правиле, может привести ​к удалению ​тысяч элементов конфигурации, ​данных ​истории и событий на большом количестве ​узлов сети. Например, некорректное ​регулярное выражение %%"​%%File systems for discovery%%"​%% может привести к удалению тысяч элементов данныхтриггеров, данных ​истории и событий.</​note>​
  
-<note important>​Ошибка или ​опечатка в регулярном выражении, которое используется в LLD правиле, может привести ​к удалению ​тысяч элементов конфигурации, ​данных ​истории и событий на большом количестве ​узлов сети. Например, некорректное ​регулярное выражение "File systems for discovery"​ может привести к удалению тысяч элементов данныхтриггеров, данных ​истории и событий.</​note>​+<note important>​Чтобы обнаружение сработало ​корректно, база данных ​Zabbix в MySQL должна ​быть создана чувствительной к регистру, если ​имена файловых ​систем различаются только по регистру.</​note>​
    
-<​note>​История правил обнаружения не сохраняется.</​note>​ 
- 
 == Кнопки диалога == == Кнопки диалога ==
  
Line 72: Line 124:
 |{{manual:​config:​button_check_now.png|}} ​ |Выполнение немедленного обнаружения на основе правила обнаружения. Правило обнаружения должно существовать. Смотрите [[:​ru/​manual/​config/​items/​check_now|более подробную]] информацию.\\ //​Обратите внимание//,​ что когда обнаружение выполняется немедленно,​ кэш конфигурации не обновляется,​ поэтому на результат не повлияют совсем недавние изменения настроек правила обнаружения. | |{{manual:​config:​button_check_now.png|}} ​ |Выполнение немедленного обнаружения на основе правила обнаружения. Правило обнаружения должно существовать. Смотрите [[:​ru/​manual/​config/​items/​check_now|более подробную]] информацию.\\ //​Обратите внимание//,​ что когда обнаружение выполняется немедленно,​ кэш конфигурации не обновляется,​ поэтому на результат не повлияют совсем недавние изменения настроек правила обнаружения. |
 |{{manual:​config:​button_delete.png|}} ​ |Удаление правила обнаружения. ​ | |{{manual:​config:​button_delete.png|}} ​ |Удаление правила обнаружения. ​ |
-|{{manual:​config:​button_cancel.png|}} ​ |тмена изменения свойств правила обнаружения. ​ |+|{{manual:​config:​button_cancel.png|}} ​ |Отмена изменения свойств правила обнаружения. ​ |
  
 === Прототипы элементов данных === === Прототипы элементов данных ===
Line 81: Line 133:
 {{manual:​discovery:​low_level_discovery:​item_prototype_fs1.png|}} {{manual:​discovery:​low_level_discovery:​item_prototype_fs1.png|}}
  
-Можно использовать [[:​ru/​manual/​config/​macros/​lld_macros|макросы]] низкоуровневого обнаружения и пользовательские [[:​ru/​manual/​appendix/​macros/​supported_by_location_user|макросы]] в настройках прототипа элементов данных и в [[:​ru/​manual/​config/​items/​item#​предобработка_значений_элемента_данных|параметрах]] предварительной обработки значений элемента данных.+Можно использовать [[:​ru/​manual/​config/​macros/​lld_macros|макросы]] низкоуровневого обнаружения и пользовательские [[:​ru/​manual/​appendix/​macros/​supported_by_location_user|макросы]] в настройках прототипа элементов данных и в [[:​ru/​manual/​config/​items/​item#​предобработка_значений_элемента_данных|параметрах]] предварительной обработки значений элемента данных. Обратите внимание,​ что при использовании в интервалах обновления,​ один макрос должен заполнять значение целиком. Запись нескольких макросов в значении или смешение макросов с текстом не поддерживается.
  
 <​note>​Контекстное экранирование макросов низкоуровневого обнаружения для безопасного их использования в регулярных выражениях и параметрах предварительной обработки XPath.</​note>​ <​note>​Контекстное экранирование макросов низкоуровневого обнаружения для безопасного их использования в регулярных выражениях и параметрах предварительной обработки XPath.</​note>​
Line 95: Line 147:
  
 {{manual:​discovery:​low_level_discovery:​item_prototypes_fs.png|}} {{manual:​discovery:​low_level_discovery:​item_prototypes_fs.png|}}
 +
 +Доступна опция //​[[:​ru/​manual/​config/​items/​itemupdate#​использование_массового_обновления|Массового обновления]]//​ на случай,​ если вы захотите обновить свойства нескольких прототипов элементов данных за раз.
  
 === Прототипы триггеров === === Прототипы триггеров ===
Line 107: Line 161:
 |//​Создать активированным// ​ |Если выбрано,​ триггер будет создан в активированном состоянии.\\ Если не выбрано,​ триггер будет добавлен как обнаруженный объект,​ но в деактивированном состоянии. ​ | |//​Создать активированным// ​ |Если выбрано,​ триггер будет создан в активированном состоянии.\\ Если не выбрано,​ триггер будет добавлен как обнаруженный объект,​ но в деактивированном состоянии. ​ |
  
-Когда будут созданы реальные триггера из их прототипов,​ возможно потребуется большая гибкость чем использованная константа ('​20'​ в нашем примере) для сравнения в выражении. Смотрите каким образом [[:​manual/​discovery/​low_level_discovery#​использование_макросов_lld_в_контекстах_пользовательских_макросов|пользовательские макросы с контекстом]] могут быть полезны для получения подобной гибкости.+Когда будут созданы реальные триггера из их прототипов,​ возможно потребуется большая гибкость чем использованная константа ('​20'​ в нашем примере) для сравнения в выражении. Смотрите каким образом [[:ru/manual/​discovery/​low_level_discovery#​использование_макросов_lld_в_контекстах_пользовательских_макросов|пользовательские макросы с контекстом]] могут быть полезны для получения подобной гибкости.
  
 Также вы можете задать [[:​ru/​manual/​config/​triggers/​dependencies|зависимости]] между прототипами триггеров (поддерживается начиная с Zabbix 3.0). Чтобы это сделать,​ перейдите на вкладку //​Зависимости//​. Прототип триггеров может зависеть от другого прототипа триггеров из этого же правила низкоуровневого обнаружения (LLD) или от обычного триггера. Прототип триггеров не может зависеть от прототипа триггеров из другого правила LLD и от триггера созданного другим прототипом триггеров. Прототип триггеров узла сети не может зависеть от триггера из шаблона. Также вы можете задать [[:​ru/​manual/​config/​triggers/​dependencies|зависимости]] между прототипами триггеров (поддерживается начиная с Zabbix 3.0). Чтобы это сделать,​ перейдите на вкладку //​Зависимости//​. Прототип триггеров может зависеть от другого прототипа триггеров из этого же правила низкоуровневого обнаружения (LLD) или от обычного триггера. Прототип триггеров не может зависеть от прототипа триггеров из другого правила LLD и от триггера созданного другим прототипом триггеров. Прототип триггеров узла сети не может зависеть от триггера из шаблона.
Line 133: Line 187:
 {{manual:​discovery:​low_level_discovery:​discovered_items1.png|}} {{manual:​discovery:​low_level_discovery:​discovered_items1.png|}}
  
-Обратите внимание,​ что обнаруженные объекты не будут созданы в случае,​ если объекты с такими же условиями уникальности уже существуют,​ например,​ элемент данных с таким же ключем или график с таким же именем.+Обратите внимание,​ что обнаруженные объекты не будут созданы в случае,​ если объекты с такими же условиями уникальности уже существуют,​ например,​ элемент данных с таким же ключом или график с таким же именем. В этом случае в веб-интерфейсе отобразится сообщений об ошибке,​ о том что правило обнаружения не смогло создать конкретные объекты. Однако,​ само правило обнаружение не станет неподдерживаемым поскольку не удалось создать некоторый объект и его пришлось пропустить. Правило обнаружения продолжит создавать/​обновлять другие объекты.
  
 Элементы данных (а также, триггеры и графики) созданые с помощью низкоуровневого правила обнаружения невозможно удалить вручную. Тем не менее, они будут удалены автоматически,​ если обнаруженный объект (файловая система,​ интерфейс и т.д.) более не обнаруживается (или более не попадает под фильтр). В этом случае они будут удалены спустя некоторое количество дней указанное в поле //​Период сохранения потерянных ресурсов//​. Элементы данных (а также, триггеры и графики) созданые с помощью низкоуровневого правила обнаружения невозможно удалить вручную. Тем не менее, они будут удалены автоматически,​ если обнаруженный объект (файловая система,​ интерфейс и т.д.) более не обнаруживается (или более не попадает под фильтр). В этом случае они будут удалены спустя некоторое количество дней указанное в поле //​Период сохранения потерянных ресурсов//​.
Line 188: Line 242:
 $first = 1; $first = 1;
  
-print "{\n";​ +print "​[\n";​
-print "​\t\"​data\":​[\n\n";+
  
 for (`cat /​proc/​mounts`) for (`cat /​proc/​mounts`)
 { {
-    ​($fsname, $fstype) = m/\S+ (\S+) (\S+)/;+ ($fsname, $fstype) = m/\S+ (\S+) (\S+)/;
  
-    ​print "​\t,​\n"​ if not $first; + print "​\t,​\n"​ if not $first; 
-    $first = 0;+ $first = 0;
  
-    ​print "​\t{\n";​ + print "​\t{\n";​ 
-    print "​\t\t\"​{#​FSNAME}\":​\"​$fsname\",​\n";​ + print "​\t\t\"​{#​FSNAME}\":​\"​$fsname\",​\n";​ 
-    print "​\t\t\"​{#​FSTYPE}\":​\"​$fstype\"​\n";​ + print "​\t\t\"​{#​FSTYPE}\":​\"​$fstype\"​\n";​ 
-    print "​\t}\n";​+ print "​\t}\n";​
 } }
  
-print "\n\t]\n"; +print "​]\n";​
-print "}\n";+
 </​code>​ </​code>​
  
Line 212: Line 264:
 Пример его вывода (переформатирован для наглядности) представлен ниже. JSON данные от пользовательской проверки обнаружения следуют такому же формату. ​ Пример его вывода (переформатирован для наглядности) представлен ниже. JSON данные от пользовательской проверки обнаружения следуют такому же формату. ​
  
-  { +<code javascript>​ 
-    "​data":​+
-     + { "​{#​FSNAME}":"/", ​                          "​{#​FSTYPE}":"​rootfs" ​  }, 
-    ​{ "​{#​FSNAME}":"/", ​                          "​{#​FSTYPE}":"​rootfs" ​  }, + { "​{#​FSNAME}":"/​sys", ​                       "​{#​FSTYPE}":"​sysfs" ​   }, 
-    { "​{#​FSNAME}":"/​sys", ​                       "​{#​FSTYPE}":"​sysfs" ​   }, + { "​{#​FSNAME}":"/​proc", ​                      "​{#​FSTYPE}":"​proc" ​    }, 
-    { "​{#​FSNAME}":"/​proc", ​                      "​{#​FSTYPE}":"​proc" ​    }, + { "​{#​FSNAME}":"/​dev", ​                       "​{#​FSTYPE}":"​devtmpfs"​ }, 
-    { "​{#​FSNAME}":"/​dev", ​                       "​{#​FSTYPE}":"​devtmpfs"​ }, + { "​{#​FSNAME}":"/​dev/​pts", ​                   "​{#​FSTYPE}":"​devpts" ​  }, 
-    { "​{#​FSNAME}":"/​dev/​pts", ​                   "​{#​FSTYPE}":"​devpts" ​  }, + { "​{#​FSNAME}":"/​lib/​init/​rw", ​               "​{#​FSTYPE}":"​tmpfs" ​   }, 
-    { "​{#​FSNAME}":"/​lib/​init/​rw", ​               "​{#​FSTYPE}":"​tmpfs" ​   }, + { "​{#​FSNAME}":"/​dev/​shm", ​                   "​{#​FSTYPE}":"​tmpfs" ​   }, 
-    { "​{#​FSNAME}":"/​dev/​shm", ​                   "​{#​FSTYPE}":"​tmpfs" ​   }, + { "​{#​FSNAME}":"/​home", ​                      "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"/​home", ​                      "​{#​FSTYPE}":"​ext3" ​    }, + { "​{#​FSNAME}":"/​tmp", ​                       "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"/​tmp", ​                       "​{#​FSTYPE}":"​ext3" ​    }, + { "​{#​FSNAME}":"/​usr", ​                       "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"/​usr", ​                       "​{#​FSTYPE}":"​ext3" ​    }, + { "​{#​FSNAME}":"/​var", ​                       "​{#​FSTYPE}":"​ext3" ​    }, 
-    { "​{#​FSNAME}":"/​var", ​                       "​{#​FSTYPE}":"​ext3" ​    }, + { "​{#​FSNAME}":"/​sys/​fs/​fuse/​connections", ​   "​{#​FSTYPE}":"​fusectl" ​ } 
-    { "​{#​FSNAME}":"/​sys/​fs/​fuse/​connections", ​   "​{#​FSTYPE}":"​fusectl" ​ } +
-     +</​code>​ 
-    ​] + 
-  }+В предыдущем примере требуется,​ чтобы ключи совпадали с именами LLD макросов,​ которые используются в прототипах,​ другой способ заключается в извлечении значений LLD макросов с использованием JSONPath ''​{#​FSNAME}''​ -> ''​$.fsname''​ и ''​{#​FSTYPE}''​ -> ''​$.fstype'',​ тем самым можно использовать следующий скрипт:​ 
 + 
 +<code perl> 
 +#​!/​usr/​bin/​perl 
 +  
 +$first = 1; 
 +  
 +print "​[\n";​ 
 +  
 +for (`cat /​proc/​mounts`) 
 +
 + ($fsname, $fstype) = m/\S+ (\S+) (\S+)/; 
 +  
 + print "​\t,​\n"​ if not $first; 
 + $first = 0; 
 +  
 + print "​\t{\n";​ 
 + print "​\t\t\"​fsname\":​\"​$fsname\",​\n";​ 
 + print "​\t\t\"​fstype\":​\"​$fstype\"​\n";​ 
 + print "​\t}\n";​ 
 +
 +  
 +print "​]\n";​ 
 +</​code>​ 
 + 
 + 
 +Пример его вывода (переформатирован для наглядности) представлен ниже. JSON данные от пользовательской проверки обнаружения следуют такому же формату.  
 +<code javascript>​ 
 +
 + { "​fsname":"/", ​                          "​fstype":"​rootfs" ​  }, 
 + { "​fsname":"/​sys", ​                       "​fstype":"​sysfs" ​   }, 
 + { "​fsname":"/​proc", ​                      "​fstype":"​proc" ​    }, 
 + { "​fsname":"/​dev", ​                       "​fstype":"​devtmpfs"​ }, 
 + { "​fsname":"/​dev/​pts", ​                   "​fstype":"​devpts" ​  }, 
 + { "​fsname":"/​lib/​init/​rw", ​               "​fstype":"​tmpfs" ​   }, 
 + { "​fsname":"/​dev/​shm", ​                   "​fstype":"​tmpfs" ​   }, 
 + { "​fsname":"/​home", ​                      "​fstype":"​ext3" ​    }, 
 + { "​fsname":"/​tmp", ​                       "​fstype":"​ext3" ​    }, 
 + { "​fsname":"/​usr", ​                       "​fstype":"​ext3" ​    }, 
 + { "​fsname":"/​var", ​                       "​fstype":"​ext3" ​    }, 
 + { "​fsname":"/​sys/​fs/​fuse/​connections", ​   "​fstype":"​fusectl" ​ } 
 +
 +</​code>​
  
 Тогда, в правилах обнаружения в поле "​Фильтр"​ мы можем указать "​{#​FSTYPE}",​ как макрос,​ и "​rootfs|ext3",​ как регулярное выражение. Тогда, в правилах обнаружения в поле "​Фильтр"​ мы можем указать "​{#​FSTYPE}",​ как макрос,​ и "​rootfs|ext3",​ как регулярное выражение.
  
-<​note>​Вы не обязаны использовать имена макросов FSNAME/​FSTYPE в пользовательских правилах низкоуровневого обнаружения,​ вы можете использовать любые другие имена, которые вам нравятся.</​note>​+<​note>​Вы не обязаны использовать имена макросов FSNAME/​FSTYPE в пользовательских правилах низкоуровневого обнаружения,​ вы можете использовать любые другие имена, которые вам нравятся. Когда используется JSONPath, тогда LLD записью будет элемент массива,​ который может быть объектом,​ но он может быть также и другим массивом или значением.</​note>​
  
 Обратите внимание на то, что при использовании пользовательского параметра,​ возвращаемые данные ограничены 512 КБ. Для получения более подробных сведений смотрите [[:​ru/​manual/​discovery/​low_level_discovery#​ограничения_данных_для_возвращаемых_значений|ограничения данных для возвращаемых значений LLD]]. Обратите внимание на то, что при использовании пользовательского параметра,​ возвращаемые данные ограничены 512 КБ. Для получения более подробных сведений смотрите [[:​ru/​manual/​discovery/​low_level_discovery#​ограничения_данных_для_возвращаемых_значений|ограничения данных для возвращаемых значений LLD]].
Line 239: Line 333:
 === - Использование макросов LLD в контекстах пользовательских макросов === === - Использование макросов LLD в контекстах пользовательских макросов ===
  
-Пользовательские макросы [[:​ru/​manual/​config/​macros/​usermacros#​контекст_пользовательских_макросов|с контекстом]] можно использовать для получения более гибких порогов в выражениях триггеров. Разные пороги можно задать на уровне пользовательского макроса и затем их можно использовать в константах триггеров,​ в зависимости от обнаруженного контекста. Обнаруженный контекст появляется,​ когда используемые [[:​manual/​config/​macros/​lld_macros|макросы низкоуровневого обнаружения]] в макросах раскрываются в реальные значения.+Пользовательские макросы [[:​ru/​manual/​config/​macros/​usermacros#​контекст_пользовательских_макросов|с контекстом]] можно использовать для получения более гибких порогов в выражениях триггеров. Разные пороги можно задать на уровне пользовательского макроса и затем их можно использовать в константах триггеров,​ в зависимости от обнаруженного контекста. Обнаруженный контекст появляется,​ когда используемые [[:ru/manual/​config/​macros/​lld_macros|макросы низкоуровневого обнаружения]] в макросах раскрываются в реальные значения.
  
 Для иллюстрации мы можем использовать данные из приведенного примера выше, предположим,​ что будут обнаружены следующие файловые системы:​ ''/'',​ ''/​home'',​ ''/​tmp'',​ ''/​usr'', ​ ''/​var''​. Для иллюстрации мы можем использовать данные из приведенного примера выше, предположим,​ что будут обнаружены следующие файловые системы:​ ''/'',​ ''/​home'',​ ''/​tmp'',​ ''/​usr'', ​ ''/​var''​.