5 Макросы низкоуровневого обнаружения
Обзор
Существует тип макросов, используемый в функции обнаружения низкого уровня (LLD):
{#MACRO}
Это макрос, который используется в правиле LLD и возвращает реальные значения имени файловой системы, сетевого интерфейса, SNMP OID и т. д.
Эти макросы могут использоваться для создания прототипов сущностей (прототипов элемента данных, триггера, графика, правила LLD, узла сети и группы узлов сети). Во время обнаружения реальных файловых систем, сетевых интерфейсов, виртуальных машин и т. д. эти макросы подставляются реальными значениями и служат основой для создания реальных сущностей.
Некоторые макросы обнаружения низкого уровня поставляются "из коробки" с функцией LLD в Zabbix — {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}. Однако при создании пользовательского правила обнаружения низкого уровня придерживаться этих имен необязательно. В этом случае вы можете использовать любое другое имя макроса LLD и ссылаться на это имя.
Поддерживаемые типы данных
При определении пользовательских правил обнаружения значения свойств, возвращаемые в объектах JSON для макросов LLD, должны относиться к одному из следующих примитивных типов:
- string
- number
- boolean
Массивы, объекты и значения null не поддерживаются.
Любой макрос LLD, ссылающийся на такое значение, останется неразвернутым и будет отображаться буквально (например, '{#MY_MACRO}') во время предобработки и создания элементов данных.
Поддерживаемые расположения
LLD-макросы можно использовать:
- в фильтре правила низкоуровневого обнаружения
- во вложенных правилах низкоуровневого обнаружения, в
- параметрах предобработки JSONPath
- поле JSONPath для пользовательских LLD-макросов
- для прототипов элементов данных и прототипов обнаружения в
- имени
- параметрах ключа
- единице измерения
- интервале обновления1
- тайм-ауте1
- периоде хранения истории1
- периоде хранения трендов1
- шагах предобработки значения элемента данных
- SNMP OID
- поле датчика IPMI
- выражении вычисляемого/агрегированного элемента данных, в:
- константах выражения и параметрах функций
- параметрах ключа элемента данных
- условиях фильтра агрегированного элемента данных (имя группы узлов сети и имя тега)
- SSH-скрипте и Telnet-скрипте
- SQL-запросе мониторинга базы данных
- поле endpoint элемента данных JMX
- описании
- поле URL HTTP-агента
- поле HTTP query fields HTTP-агента
- поле тела запроса HTTP-агента
- поле требуемых кодов состояния HTTP-агента
- ключе и значении поля заголовков HTTP-агента
- поле имени пользователя HTTP-аутентификации HTTP-агента
- поле пароля HTTP-аутентификации HTTP-агента
- поле HTTP-прокси HTTP-агента
- поле файла SSL-сертификата HTTP-агента
- поле файла SSL-ключа HTTP-агента
- поле пароля SSL-ключа HTTP-агента
- тегах
- для прототипов триггеров в
- имени
- рабочих данных
- выражении (только в константах и параметрах функций)
- URL
- описании
- тегах
- для прототипов графиков в
- имени
- для прототипов узлов сети в
- имени
- видимом имени
- пользовательских полях интерфейса: IP, DNS, порт, community SNMP v1/v2, контекстное имя SNMP v3, имя безопасности SNMP v3, парольная фраза аутентификации SNMP v3, парольная фраза приватности SNMP v3
- имени прототипа группы узлов сети
- значении тега узла сети
- значении макроса узла сети
- (см. полный список)
Во всех этих местах, кроме фильтра правила низкоуровневого обнаружения, LLD-макросы можно использовать внутри статического пользовательского контекста макроса.
Использование функций макросов
Функции макросов поддерживаются с макросами низкоуровневого обнаружения, позволяя извлекать определённую часть значения макроса с помощью регулярного выражения (кроме фильтра правила низкоуровневого обнаружения).
Например, может потребоваться извлечь имя клиента и номер интерфейса из следующего LLD-макроса для целей присвоения тегов событиям:
{#IFALIAS}=customername_1
Для этого можно использовать функцию макроса regsub с макросом в поле значения тега события в прототипе триггера:

Обратите внимание, что запятые не допускаются в некавыченных параметрах ключа элемента данных, поэтому параметр, содержащий функцию макроса, должен быть заключён в кавычки.
Для экранирования двойных кавычек внутри параметра следует использовать символ обратной косой черты (\).
Пример:
net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]
Дополнительную информацию о синтаксисе функций макросов см. в разделе: Функции макросов
Функции макросов поддерживаются в макросах низкоуровневого обнаружения начиная с Zabbix 4.0.
Прототипы элементов данных без параметров ключа
Если параметры ключа элемента данных не используются, поместите макрос LLD внутрь скобок параметра ключа элемента данных [...], чтобы он обрабатывался как параметр и подставлялся во время обнаружения:
v_[{#MACRO}]
Сноски
1 В полях, отмеченных 1, один макрос должен заполнять всё поле целиком. Несколько макросов в одном поле или макросы, смешанные с текстом, не поддерживаются.