3. Низкоуровневое обнаружение (LLD)

Обзор

Низкоуровневое обнаружение (англ. Low-level discovery, LLD) даёт возможность автоматического создания элементов данных, триггеров и графиков для различных объектов на компьютере. Например, Zabbix может автоматически начать мониторинг файловых систем или сетевых интерфейсов на вашем устройстве, без необходимости создания вручную элементов данных для каждой файловой системы или сетевого интерфейса. Кроме того, в Zabbix имеется возможность настроить удаление ненужных объектов, основываясь на фактических результатах периодически выполняемого обнаружения.

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

Общая архитектура процессов обнаружения заключается в следующем.

Сначала пользователь создаёт правило обнаружения в Сбор данных (Data collection) → Шаблоны (Templates), в колонке «Обнаружение (Discovery)». Правило обнаружения состоит из (1) элемента данных, который осуществляет обнаружение необходимых объектов (например, файловых систем или сетевых интерфейсов) и (2) прототипов элементов данных, триггеров и графиков, которые должны быть созданы на основании полученных значений этого элемента данных.

Элемент данных, который осуществляет обнаружение необходимых объектов, подобен обычным элементам данных, которые видны в других местах: Zabbix сервер запрашивает у Zabbix агента (или используя любой другой указанный тип элемента данных) значение этого элемента данных, и агент отвечает текстовым значением. Разница в том, что значение, которое возвращает агент, должно содержать список обнаруженных объектов в формате JSON. Хотя детали этого формата важны только для создателей собственных проверок обнаружения, всё же необходимо знать, что возвращаемое значение содержит список из пар: макрос → значение. Например, элемент данных «net.if.discovery» может вернуть две пары: «{#IFNAME}» → «lo» и «{#IFNAME}» → «eth0».

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

Когда сервер получает значение элемента данных обнаружения, он смотрит на пары макрос → значение и для каждой пары создаёт реальные элементы данных, триггеры и графики, основанные на их прототипах. В приведённом выше примере с «net.if.discovery», сервер будет создавать один набор элементов данных, триггеров и графиков для локального интерфейса «lo» и другой набор для интерфейса «eth0».

Обратите внимание, что начиная с Zabbix 4.2, формат возвращаемого правилами низкоуровневого обнаружения JSON-а изменился. Более не ожидается, что JSON будет содержать объект "data". Чтобы поддерживать новые возможности — такие как предобработку значений элементов данных и пользовательские пути к значениям LLD-макросов в документе JSON, — правила LLD теперь будут воспринимать обычный JSON, содержащий массив.

Встроенные ключи обнаружения были обновлены, чтобы возвращать массив строк LLD на корневом уровне JSON документа. Zabbix будет автоматически извлекать макрос и значение, если массив использует синтаксис {#MACRO} как ключ. Любые новые собственные проверки обнаружений будут использовать новый синтаксис без элемента "data". При обработке значения LLD сначала находится корень (массив на уровне $. или $.data).

Хотя элемент "data" был убран из всех собственных элементов данных, относящихся к обнаружению, в целях обратной совместимости Zabbix всё ещё будет воспринимать нотацию JSON с элементом "data", хотя его использование не рекомендуется. Если JSON содержит объект с единственным элементом "data" (массивом), то будет автоматически извлекаться содержимое этого элемента, используя JSONPath $.data. Низкоуровневое обнаружение теперь воспринимает необязательные определённые пользователем LLD-макросы с настраиваемым путём, указанным с помощью синтаксиса JSONPath.

В результате вышеуказанных изменений, новые агенты более не будут способны работать с более старым сервером Zabbix.

Смотрите также: Обнаруженные объекты

Настройка низкоуровневого обнаружения

Мы проиллюстрируем низкоуровневое обнаружение на примере обнаружения файловых систем.

Для настройки обнаружения, выполните следующее:

  • Перейдите в: Сбор данныхШаблоны или Узлы сети (Data collectionTemplates или Hosts)
  • Нажмите на Обнаружение (Discovery) в строке с соответствующим шаблоном / узлом сети

  • Нажмите на Создать правило обнаружения (Create discovery rule) в верхнем правом углу экрана
  • Заполните диалог правила обнаружения необходимыми деталями

Правило обнаружения

Диалог правила обнаружения содержит пять вкладок, представляющих (слева направо) поток обработки данных во время обнаружения:

  • Правило обнаружения (Discovery rule) — самое главное, определяет встроенный элемент данных или пользовательский сценарий для получения данных обнаружения
  • Предобработка (Preprocessing) — применяет какую-либо предобработку к данным обнаружения
  • LLD макросы (LLD macros) — позволяет извлечь значения некоторых макросов, чтобы использовать в обнаруженных элементах данных, триггерах и т.д.
  • Фильтры (Filters) — позволяет отфильтровать обнаруженные значения
  • Замещения (Overrides) — позволяет изменить прототипы элементов данных, триггеров, графиков или узлов сети, когда они применяются к конкретным найденным объектам

Вкладка Правило обнаружения (Discovery rule) содержит ключ элемента данных, используемого для обнаружения (а также некоторые общие атрибуты правила обнаружения):

Все обязательные поля ввода отмечены красной звёздочкой.

Параметр Описание
Имя (Name) Имя правила обнаружения.
Тип
(Type)
Тип проверки выполняемого обнаружения.
В данном примере мы используем тип Zabbix агент.
Правило обнаружения также может являться зависимым элементом данных, зависящим от обычного элемента данных. Оно не может зависеть от другого правила обнаружения. Для зависимых элементов данных выберите соответствующий тип (Зависимый элемент данных (Dependent item)) и укажите основной элемент данных в поле «Основной элемент данных (Master item)». Основной элемент данных должен существовать.
Ключ
(Key)
Введите ключ элемента данных, используемого для обнаружения (до 2048 символов).
Например, вы можете использовать встроенный ключ элемента данных «vfs.fs.discovery», который возвращает строку JSON со списком файловых систем, присутствующих в компьютере, их типов и опций монтирования.
Обратите внимание, что другой вариант обраружения файловых систем — это использовать результаты, возвращаемые ключом агента «vfs.fs.get» (смотрите пример).
Интервал обновления
(Update interval)
Это поле задаёт, как часто Zabbix выполняет обнаружение. Вначале, когда вы только настраиваете обнаружение файловых систем, вы можете указать маленький интервал; но как только вы удостоверитесь что всё работает, вы можете установить его в 30 минут или более, потому что обычно файловые системы не меняются очень часто.
Поддерживаются суффиксы времени, например: 30s, 1m, 2h, 1d.
Поддерживаются пользовательские макросы.
Обратите внимание: интервал обновления может быть выставлен в «0» только если существует пользовательский интервал с ненулевым значением. Если укажете значение, равное «0», и пользовательский интервал (переменный или по расписанию) с ненулевым значением существует, элемент данных будет опрашиваться в течение действия переменного интервала.
Новые правила обнаружения будут проверяться в течение 60 секунд с момента их создания, если только для них не заданы интервал обновления по расписанию или переменный интервал обновления, а Интервал обновления (Update interval) не установлен в 0.
Обратите внимание, что уже созданное правило обнаружения можно выполнить незамедлительно нажатием кнопки Выполнить сейчас.
Пользовательские интервалы
(Custom intervals)
Вы можете создавать пользовательские правила проверки элемента данных:
Гибкий (Flexible) — создание исключений из Интервала обновления (интервал с другой частотой обновления)
По расписанию (Scheduling) — создание пользовательского расписания проверки.
Для получения более подробной информации смотрите Пользовательские интервалы.
Время ожидания
(Timeout)
Укажите тайм-аут проверки обнаружения. Выберите вариант тайм-аута:
Глобальный (Global) — используется глобальный тайм-аут или тайм-аут прокси (отображается в поле Время ожидания на сером фоне);
Замещения (Override) — применяется пользовательский тайм-аут (заданный в поле Время ожидания; допустимый диапазон: 1 - 600s). Поддерживаются суффиксы времени, например: 30s, 1m; также поддерживаются пользовательские макросы.
Щелчок по ссылке Время ожидания (Timeouts) позволяет настроить тайм-ауты прокси либо глобальные тайм-ауты (если прокси не используется). Обратите внимание, что ссылка Время ожидания (Timeouts) видна только пользователям с типом Супер-администратор, имеющим доступ к разделам веб-интерфейса Администрирование (Administration)Общие (General) или Администрирование (Administration)Прокси (Proxies).
Удаление потерянных ресурсов
(Delete lost resources)
Укажите, через какое время обнаруженный объект будет удалён, после того как его состояние обнаружения станет «более не обнаруживается (Not discovered anymore)»:
Никогда (Never) — не будет удалён;
Незамедлительно (Immediately) — будет удалён сразу же;
После (After) — будет удалён по истечении указанного периода времени. Значение должно быть больше, чем значение в поле Деактивация потерянных ресурсов (Disable lost resources).
Поддерживаются суффиксы времени, например: 2h, 1d.
Поддерживаются пользовательские макросы.
Обратите внимание: Использование значения «Незамедлительно (Immediately)» не рекомендуется, так как простое ошибочное изменение фильтра может закончиться тем, что объект будет удалён вместе со всеми данными истории.
Обратите внимание, что ресурсы, деактивированные вручную, правилом низкоуровневого обнаружения удалены не будут.
Деактивация потерянных ресурсов
(Disable lost resources)
Укажите, через какое время обнаруженный объект будет деактивирован, после того как его состояние обнаружения станет «более не обнаруживается (Not discovered anymore)»:
Никогда (Never) — не будет деактивирован;
Незамедлительно (Immediately) — будет деактивирован сразу же;
После (After) — будет деактивирован по истечении указанного периода времени. Значение должно быть больше, чем интервал обновления правила обнаружения.
Обратите внимание, что автоматически деактивированные ресурсы будут активированы снова, если будут заново обнаружены низкоуровневым обнаружением. Ресурсы, деактивированные вручную, не станут активированы снова при повторном обнаружении.
Это поле не отображается, если параметр Удаление потерянных ресурсов (Delete lost resources) задан в «Незамедлительно (Immediately)».
Поддерживаются суффиксы времени, например: 2h, 1d.
Поддерживаются пользовательские макросы.
Описание (Description) Введите описание.
Активировано (Enabled) Если отмечено, правило будет обрабатываться.

История правил обнаружения не сохраняется.

Предобработка

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

Смотрите также:

Тип
Преобразование Описание
Текст (Text)
Регулярное выражение
(Regular expression)
Сопоставить полученное значение с регулярным выражением <шаблона> и заменить значение тем, что извлекается в <выводе>. Регулярное выражение поддерживает извлечение максимум 10 захваченных групп с помощью последовательностей \N.
Параметры:
шаблон (pattern) — регулярное выражение
вывод (output) — шаблон форматирования вывода. \N (где N=1…9) — управляющая последовательность заменяется N-ной совпадающей группой. Управляющая последовательность \0 заменяется совпадающим текстом.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
Замена
(Replace)
Поиск нужной строки и замена её на другую (или пустотой). Будут заменены все экземпляры искомой строки.
Параметры:
строка поиска (search string) — строка для поиска и замены, с учётом регистра (обязательно)
замена (replacement) — строка для замены строки поиска. Строка замены может быть и пустой, что позволяет эффективно удалять строку поиска при ее обнаружении.
Можно использовать управляющие последовательности для поиска или замены переводов строки, возврата каретки, табуляции и пробелов "\n \r \t \s"; обратную косую черту можно экранировать как "\\", а управляющие последовательности можно экранировать как "\\n". При низкоуровневом обнаружении экранирование переводов строки, возвратов каретки, табуляций выполняется автоматически.
Составные данные (Structured data)
JSONPath Извлечение значения или фрагмента из данных JSON с использованием функционала JSONPath.
Если выбрана опция Другое при ошибке (Custom on fail), элемент данных не перейдёт в неподдерживаемое состояние при неуспешном завершении шага предобработки, и появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
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>
Обратите внимание на то, что пространства имён не поддерживаются.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
CSV в JSON
(CSV to JSON)
Конвертация данных файла CSV в формат JSON.
Для получения дополнительной информации смотрите: Преобразование CSV в JSON.
XML в JSON
(XML to JSON)
Конвертация данных в XML формате в JSON.
Для получения дополнительной информации смотрите: Правила сериализации.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
SNMP
Значение SNMP walk
(SNMP walk value)
Извлечение значения по указанному OID / имени MIB и применение параметров форматирования:
Без изменений (Unchanged) — вернуть шестнадцатеричную строку как неэкранированную шестнадцатеричную строку (обратите внимание, что подсказки отображения всё ещё применяются);
UTF-8 из Hex-STRING (UTF-8 from hex-STRING) — преобразовать шестнадцатеричную строку в строку UTF-8;
MAC из Hex-STRING (MAC from hex-STRING) — преобразовать шестнадцатеричную строку в строку MAC-адреса (где « » заменяются на «:»);
Целое число из BITS (Integer from BITS) — преобразовать первые 8 байтов битовой строки, выраженной как последовательность шестнадцатеричных символов (например, «1A 2B 3C 4D»), в 64-битное беззнаковое целое число. В битовых строках длиннее 8 байтов последующие байты будут игнорироваться.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
SNMP walk в JSON
(SNMP walk to JSON)
Преобразовать значения SNMP в JSON. Укажите имя поля в JSON и соответствующий путь SNMP OID. Значения полей будут заполнены значениями в указанном пути SNMP OID.
Можно использовать этот шаг предварительной обработки для обнаружения SNMP OID.
Доступны параметры форматирования значений, аналогичные шагу Значение SNMP walk (SNMP walk value).
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
SNMP get значение
(SNMP get value)
Применить параметры форматирования к SNMP get значение:
UTF-8 из Hex-STRING (UTF-8 from Hex-STRING) — преобразовать hex-строку в строку UTF-8;
MAC из Hex-STRING (MAC from Hex-STRING) — преобразовать шестнадцатеричную строку в строку MAC-адреса (где « » заменяются на «:»);
Целое число из BITS (Integer from BITS) — преобразовать первые 8 байтов битовой строки, выраженной как последовательность шестнадцатеричных символов (например, «1A 2B 3C 4D»), в 64-битное беззнаковое целое число. В битовых строках длиннее 8 байтов последующие байты будут игнорироваться.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
Пользовательские скрипты (Custom scripts)
JavaScript Введите код JavaScript в блоке, который появится при нажатии в поле параметра или на иконку карандаша.
Обратите внимание, что доступная длина JavaScript зависит от используемой базы данных.
Для получения дополнительной информации смотрите: Предобработка Javascript
Валидация (Validation)
Не совпадает с регулярным выражением
(Does not match regular expression)
Укажите регулярное выражение, которому значение не должно соответствовать.
Например: Error:(.*?)\.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
Проверка на ошибку в JSON
(Check for error in JSON)
Проверка, нет ли сообщения об ошибке на уровне приложения в JSONPath. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого шага предварительной обработки. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Например: $.errors. Если получен JSON наподобие {"errors":"e1"}, следующий шаг предобработки выполняться не будет.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
Проверьте на наличие ошибок в XML
(Check for error in XML)
Проверка, нет ли сообщения об ошибке на уровне приложения в XPath. Обработка будет остановлена в случае положительного результата (сообщение присутствует и непустое); в противном случае обработка будет продолжена со значением, подготовленным до этого шага предварительной обработки. Обратите внимание, что эти внешние сервисные ошибки сообщаются пользователю напрямую, без добавления информации о шаге предварительной обработки.
Об ошибке не будет сообщено в случае сбоя при разборе некорректного XML.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
Совпадение регулярному выражению
(Matches regular expression)
Укажите регулярное выражение, которому значение обязано соответствовать.
Если выбрана опция Другое при ошибке (Custom on fail), появится возможность указать пользовательские параметры обработки ошибок: либо отбросить значение, либо задать указанное значение, либо задать нужное сообщение об ошибке.
Троттлинг (Throttling)
Отбрасывать не изменившееся с периодическим контролем
(Discard unchanged with heartbeat)
Отбросить значение, если оно не изменилось в течение заданного периода (в секундах).
Поддерживаются положительные целые значения для секунд (минимально — 1 секунда). В этом поле можно использовать суффиксы времени (такие как 30s, 1m, 2h, 1d). В этом поле можно использовать пользовательские макросы и макросы низкоуровневого обнаружения.
Для элемента данных правила обнаружения можно указать только один параметр троттлинга.
Например: 1m. Если идентичный текст передаётся этому правилу дважды в течение 60 секунд, он будет отброшен.
Обратите внимание: Изменение прототипов элементов данных не сбрасывает троттлинг. Троттлинг сбрасывается только при изменении шагов предобработки.
Prometheus
Prometheus в JSON
(Prometheus to JSON)
Преобразование необходимых Prometheus метрик в JSON.
Обратитесь к проверкам Prometheus для получения более подробных сведений.

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

Настраиваемые макросы

Вкладка LLD макросы (LLD macros) позволяет указать настраиваемые макросы низкоуровневого обнаружения.

Настраиваемые макросы полезны в случаях, когда возвращаемый JSON не имеет нужных макросов, уже определённых должным образом. Так, например:

  • Встроенный ключ vfs.fs.discovery для обнаружения файловых систем возвращает JSON с некоторыми уже определёнными LLD макросами, такими как {#FSNAME} и {#FSTYPE}. Эти макросы могут быть непосредственно использованы в прототипах элементов данных и триггеров (смотрите последующие разделы на этой странице); определение настраиваемых макросов не требуется;
  • Элемент данных агента vfs.fs.get также возвращает JSON с данными о файловой системе, однако, без готовых LLD макросов. В этом случае вы можете определить эти макросы самостоятельно, и выставить соответствие между ними и значениями в JSON-е, используя JSONPath:

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

Параметр Описание
LLD макрос
(LLD macro)
Имя макроса низкоуровневого обнаружения, с использованием следующего синтаксиса: {#MACRO}.
JSONPath Путь, используемый для извлечения значения LLD макроса из строки LLD, используя синтаксис JSONPath.
Значения, извлекаемые из возвращаемого JSON-а, используются для замены LLD макросов в полях прототипов элемента данных, триггера и т.п.
JSONPath может быть указан, используя нотацию с точкой или с квадратными скобками. Нотация с квадратными скобками должна использоваться в случаях использования любых специальных символов и символов Unicode, наподобие следующего: $['unicode + special chars #1']['unicode + special chars #2'].

Например, $.foo извлечёт «bar» и «baz» из такого JSON-а: [{"foo":"bar"}, {"foo":"baz"}]
Обратите внимание, что $.foo также извлечёт «bar» и «baz» из такого JSON-а: {"data":[{"foo":"bar"}, {"foo":"baz"}]} из-за того, что одиночный объект "data" обрабатывается автоматически (для обратной совместимости с реализацией низкоуровневого обнаружения в версиях Zabbix до 4.2).

Фильтр правила обнаружения

Фильтры могут использоваться для того, чтобы генерировать реальные элементы данных, триггеры и графики только для объектов, соответствующих неким критериям. Вкладка Фильтры (Filters) содержит определения правил фильтрации обнаружения, позволяющих фильтровать обнаруженные значения:

Параметр Описание
Тип вычисления
(Type of calculation)
Доступны следующие опции расчёта фильтров:
И (And) — должны выполниться все фильтры;
Или (Or) — достаточно выполнения одного фильтра;
И/Или (And/Or) — используется И для разных имён макросов и Или для одинаковых имён макросов;
Пользовательское выражение (Custom expression) — появляется возможность указать пользовательское вычисление фильтров. Формула должна включать в себя все фильтры из списка. Ограничено 255 символами.
Фильтры
(Filters)
Доступны следующие операторы условий фильтра: совпадает, не соответствует, существует, не существует (matches, does not match, exists, does not exist).
Операторы совпадает и не соответствует ожидают Perl Compatible Regular Expression (PCRE). Например, если вы заинтересованы только в файловых системах C:, D: и E:, вы можете поместить {#FSNAME} в текстовое поле «Макрос», а регулярное выражение «^C|^D|^E» — в поле «Регулярное выражение». Фильтрация также возможна по типам файловых систем, при использовании макроса {#FSTYPE} (например, «^ext|^reiserfs») и по типу диска (поддерживается только Windows агентами), используя макрос {#FSDRIVETYPE} (например, «fixed»).
В поле «Регулярное выражение» вы можете ввести регулярное выражение или ссылку на глобальное регулярное выражение.
Для проверки регулярного выражения вы можете использовать «grep -E», например: for f in ext2 nfs reiserfs smbfs; do echo $f | grep -E '^ext|^reiserfs' || echo "SKIP: $f"; done

Операторы существует и не существует позволяют фильтровать объекты на основе присутствия или отсутствия указанных LLD макросов в ответе.

Обратите внимание, что если какой-то макрос из фильтра пропущен в ответе, найденный объект будет игнорироваться, если только для этого макроса не задано условие «не существует».

Если отсутствие макроса влияет на результат выражения, то будет отображено предупреждение. Например, если {#B} отсутствует в:
{#A} совпадает 1 и {#B} совпадает 2 — выдаст предупреждение
{#A} совпадает 1 или {#B} совпадает 2 — предупреждения не будет.

Ошибка или опечатка в регулярном выражении, которое используется в LLD правиле (например, некорректное регулярное выражение «File systems for discovery»), может привести к удалению тысяч элементов конфигурации, данных истории и событий на большом количестве узлов сети.

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

Замещения

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

Замещения (если есть) отображаются в виде списка, позволяющего менять порядок путём перетаскивания, и выполняются в том порядке, в котором они определены. Чтобы настроить детали нового замещения, нажмите на (Добавить) в блоке Замещения (Overrides). Чтобы отредактировать существующее замещение, нажмите на его имя. Откроется всплывающее окно, позволяющее редактировать детали замещения.

Все обязательные поля ввода отмечены красной звёздочкой.

Параметр Описание
Имя (Name) Уникальное (для правила LLD) имя замещения.
При соответствии фильтру
(If filter matches)
Определяет, должны ли обрабатываться последующие замещения при соответствии условиям фильтра:
Продолжить замещения (Continue overrides) — последующие замещения будут обработаны.
Остановка обработки (Stop processing) — для соответствующих строк LLD операции из предыдущих (если есть) и данного замещений будут выполнены, последующие замещения будут проигнорированы.
Фильтры
(Filters)
Определяет, к каким обнаруженным объектам должно применяться замещение. Фильтры замещений обрабатываются после фильтров правил обнаружения и имеют такой же функционал.
Операции
(Operations)
Операции замещения отображаются со следующими подробностями:
Условие (Condition) — тип объекта (прототип элемента данных / прототип триггера / прототип графика / прототип узла сети) и условие сравнения (равно / не равно / содержит / не содержит / совпадает / не соответствует)
Действие (Action) — ссылки для редактирования и удаления отображаемой операции.

Настройка операции

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

Параметр Описание
Объект (Object) Доступны 4 типа объектов:
Прототип элемента данных
Прототип триггеров
Прототип графиков
Прототип узлов сети
Условие (Condition) Разрешает фильтрацию объектов, к которым должна применяться операция.
Оператор Поддерживаемые операторы:
равно (equals) — применяется к этому прототипу
не равно (does not equal) — применяется ко всем прототипам, кроме этого
содержит (contains) — применяется, если имя прототипа содержит данную строку
не содержит (does not contain) — применяется, если имя прототипа не содержит данную строку
совпадает (matches) — применяется, если имя прототипа соответствует регулярному выражению
не соответствует (does not match) — применяется, если имя прототипа не соответствует регулярному выражению
Шаблон Регулярное выражение или искомая строка.
Объект: Прототип элемента данных (Item prototype)
Создать активированным
(Create enabled)
Если отмечено, то появятся кнопки, позволяющие переопределить исходные настройки прототипа элемента данных:
Да (Yes) — элемент данных будет добавлен в активированном состоянии.
Нет (No) — элемент данных для обнаруженного объекта будет добавлен, но в деактивированном состоянии.
Обнаружение
(Discover)
Если отмечено, то появятся кнопки, позволяющие переопределить исходные настройки прототипа элемента данных:
Да (Yes) — элемент данных будет добавлен.
Нет (No) — элемент данных не будет добавлен.
Интервал обновления
(Update interval)
Если отмечено, то появятся две опции, позволяющие выставить отличающийся интервал для элемента данных:
Задержка (Delay) — интервал обновления элемента данных. Поддерживаются пользовательские макросы и суффиксы времени (например: 30s, 1m, 2h, 1d). Должно быть выставлено в 0, если используются Пользовательские интервалы (Custom interval).
Пользовательские интервалы (Custom interval) — нажмите (Добавить), чтобы указать переменные интервалы или интервалы по расписанию. Для подробной информации смотрите Пользовательские интервалы.
История
(History)
Если отмечено, то появятся кнопки, позволяющие выставить другие настройки периода хранения истории для элемента данных:
Не хранить (Do not store) — если выбрано, то история не будет сохраняться.
Хранить до (Store up to) — если выбрано, то справа появится поле для ввода периода хранения истории. Поддерживаются пользовательские макросы и LLD макросы.
Динамика изменений
(Trends)
Если отмечено, то появятся кнопки, позволяющие выставить другие настройки периода хранения динамики изменений для элемента данных:
Не хранить (Do not store) — если выбрано, то динамика изменений не будет сохраняться.
Хранить до (Store up to) — если выбрано, то справа появится поле для ввода периода хранения динамики изменений. Поддерживаются пользовательские макросы и LLD макросы.
Теги (Tags) Если отмечено, то появится новый блок, позволяющий указать пары тег-значение.
Эти теги будут добавлены к тегам, указанным в прототипе элемента данных, даже если имена тегов совпадают.
Объект: Прототип триггеров
Создать активированным
(Create enabled)
Если отмечено, то появятся кнопки, позволяющие переопределить исходные настройки прототипа триггера:
Да (Yes) — триггер будет добавлен в активированном состоянии.
Нет (No) — триггер для обнаруженного объекта будет добавлен, но в деактивированном состоянии.
Обнаружение
(Discover)
Если отмечено, то появятся кнопки, позволяющие переопределить исходные настройки прототипа триггера:
Да (Yes) — триггер будет добавлен.
Нет — триггер не будет добавлен.
Важность (Severity) Если отмечено, то появятся кнопки, позволяющие поменять важность триггера.
Теги (Tags) Если отмечено, то появится новый блок, позволяющий указать пары тег-значение.
Эти теги будут добавлены к тегам, указанным в прототипе триггера, даже если имена тегов совпадают.
Объект: Прототип графиков
Обнаружение
(Discover)
Если отмечено, то появятся кнопки, позволяющие переопределить исходные настройки прототипа графика:
Да (Yes) — график будет добавлен.
Нет (No) — график не будет добавлен.
Объект: Прототип узлов сети
Создать активированным
(Create enabled)
Если отмечено, то появятся кнопки, позволяющие переопределить исходные настройки прототипа узла сети:
Да (Yes) — узел сети будет добавлен в активированном состоянии.
Нет (No) — узел сети будет добавлен в деактивированном состоянии.
Обнаружение
(Discover)
Если отмечено, то появятся кнопки, позволяющие переопределить исходные настройки прототипа узла сети:
Да (Yes) — узел сети будет обнаружен.
Нет (No) — узел сети не будет обнаружен.
Присоединить шаблоны
(Link templates)
Если отмечено, то появится поле ввода для указания шаблонов. Начните вводить имя шаблона или нажмите на Выбрать (Select) рядом с полем и выберите шаблоны из списка во всплывающем окне.
Шаблоны из данного замещения добавляются ко всем шаблонам, уже присоединённым к прототипу узла сети.
Теги (Tags) Если отмечено, то появится новый блок, позволяющий указать пары тег-значение.
Эти теги будут добавлены к тегам, указанным в прототипе узла сети, даже если имена тегов совпадают.
Инвентарные данные узла сети
(Host inventory)
Если отмечено, то появятся кнопки, позволяющие выбрать различные режимы инвентаризации для прототипа узла сети:
Деактивировано (Disabled) — не заполнять инвентарные данные узла сети
Вручную (Manual) — предоставить информацию вручную
Автоматически (Automated) — автоматическое заполнение инвентарных данных узла сети на основе собираемых метрик.

Кнопки диалога

Кнопки в нижней части диалога позволяют выполнить несколько видов операций.

(Добавить) Добавление правила обнаружения. Эта кнопка доступна только для новых правил обнаружения.
(Обновить) Обновление свойств правила обнаружения. Эта кнопка доступна только для уже существующих правил обнаружения.
(Клонировать) Создание другого правила обнаружения на основе свойств текущего правила обнанужения.
(Выполнить сейчас) Выполнение немедленного обнаружения на основе правила обнаружения. Правило обнаружения должно существовать. Смотрите более подробную информацию.
Обратите внимание, что когда обнаружение выполняется немедленно, кэш конфигурации не обновляется, поэтому на результат не повлияют совсем недавние изменения настроек правила обнаружения.
(Тест) Протестировать настройки правила обнаружения. Используйте эту кнопку для проверки настроек конфигурации (таких как подключение и корректность параметров) без постоянного применения каких-либо изменений.
(Удалить) Удаление правила обнаружения
(Отмена) Отмена изменения свойств правила обнаружения.

Обнаруженные объекты

Представленные ниже снимки экрана иллюстрируют, как выглядят уже обнаруженные элементы данных, триггеры и графики в настройках узла сети. Обнаруженные объекты имеют префикс — ссылку золотистого цвета, которая ведёт к правилу обнаружения, создавшему эти объекты.

Обратите внимание, что обнаруженные объекты не будут созданы в случае, если объекты с такими же условиями уникальности уже существуют — например, элемент данных с таким же ключом или график с таким же именем. В таком случае в веб-интерфейсе отобразится сообщение об ошибке, что правило низкоуровневого обнаружения не смогло создать определённые объекты. Само правило обнаружения, тем не менее, не станет неподдерживаемым из-за того, что некоторые объекты не смогли быть созданы и были пропущены. Правило обнаружения перейдёт к созданию/обновлению других объектов.

Если обнаруженный объект (узел сети, файловая система, интерфейс и т.д.) более не обнаруживается (или более не попадает под фильтр), то объекты, созданные на его основе, могут быть автоматически деактивированы и впоследствии удалены.

Потерянные ресурсы могут быть автоматически деактивированы на основе значения параметра Удаление потерянных ресурсов (Delete lost resources). Это влияет на потерянные узлы сети, группы узлов сети, элементы данных, триггеры и графики.

Потерянные ресурсы могут быть автоматически удалены на основе значения параметра Деактивация потерянных ресурсов (Disable lost resources). Это влияет на потерянные узлы сети, элементы данных и триггеры.

Когда обнаруженный объект становится «Более не обнаруживается», в списке элементов данных будет отображаться оранжевый индикатор времени жизни. Переместите курсор мыши на этот индикатор, и вы увидите сообщение с количеством дней до момента удаления элемента данных.

Если объекты помечены на удаление, но не были удалены в назначенное время (деактивировано правило обнаружения или узел сети элемента данных), они удалятся при следующем выполнении правила обнаружения.

Объекты, которые содержат другие объекты, которые помечены на удаление, не будут обновлены, если будут изменены на уровне правила обнаружения. Например, триггеры на основе LLD не будут обновлены, если они содержат элементы данных, которые помечены на удаление.

Другие типы обнаружения

Для получения более подробных сведений и инструкций по остальным типам доступных «из коробки» обнаружений смотрите следующие разделы:

Для получения более подробных сведений касательно JSON формата по обнаружению элементов данных и примера, каким образом реализовать своё собственное обнаружение файловых систем при помощи Perl скрипта, смотрите создание пользовательских правил LLD.