Макросы низкоуровневого обнаружения

Обзор

Существует тип макроса, используемый внутри функции low-level discovery (LLD):

{#MACRO} 

Это макрос, который используется в правиле LLD и возвращает реальные значения имени файловой системы, сетевого интерфейса, SNMP OID и т. д.

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

Некоторые макросы low-level discovery поставляются "из коробки" вместе с функцией LLD в Zabbix - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}. Однако при создании пользовательского правила low-level discovery следовать этим именам не обязательно. В этом случае можно использовать любое другое имя макроса LLD и ссылаться на него.

Поддерживаемые типы данных

При определении пользовательских правил обнаружения значения свойств, возвращаемые в объектах JSON для макросов LLD, должны быть одним из следующих примитивных типов:

  • string
  • number
  • boolean

Массивы, объекты и нулевые значения не поддерживаются. Любой макрос LLD, ссылающийся на такое значение, во время предварительной обработки и создания элемента данных останется нераскрытым и будет отображаться буквально (например, '{#MY_MACRO}').

Поддерживаемые расположения

Макросы LLD можно использовать:

  • в фильтре правила низкоуровневого обнаружения
  • во вложенных правилах низкоуровневого обнаружения, в
    • параметрах предварительной обработки JSONPath
    • поле JSONPath для пользовательских макросов LLD
  • для прототипов элементов данных и прототипов обнаружения в
    • имени
    • параметрах ключа
    • единице измерения
    • интервале обновления1
    • времени ожидания1
    • периоде хранения истории1
    • периоде хранения трендов1
    • шагах предварительной обработки значения элемента данных
    • SNMP OID
    • поле датчика IPMI
    • выражении вычисляемого/агрегатного элемента данных, в:
      • константах выражения и параметрах функций
      • параметрах ключа элемента данных
    • условиях фильтра агрегатного элемента данных (имя группы узлов сети и имя тега)
    • скрипте SSH и скрипте Telnet
    • SQL-запросе мониторинга базы данных
    • поле конечной точки элемента данных JMX
    • описании
    • поле URL элемента данных HTTP agent
    • поле полей HTTP-запроса элемента данных HTTP agent
    • поле тела запроса элемента данных HTTP agent
    • поле обязательных кодов состояния элемента данных HTTP agent
    • ключе и значении поля заголовков элемента данных HTTP agent
    • поле имени пользователя HTTP-аутентификации элемента данных HTTP agent
    • поле пароля HTTP-аутентификации элемента данных HTTP agent
    • поле HTTP-прокси элемента данных HTTP agent
    • поле файла SSL-сертификата элемента данных HTTP agent
    • поле файла SSL-ключа элемента данных HTTP agent
    • поле пароля SSL-ключа элемента данных HTTP agent
    • поле Time shift запроса телеметрии
    • поле Lookback limit запроса телеметрии
    • поле Granularity запроса телеметрии
    • тегах
  • для прототипов триггеров в
    • имени
    • операционных данных
    • выражении (только в константах и параметрах функций)
    • URL
    • описании
    • тегах
  • для прототипов графиков в
    • имени
  • для прототипов узлов сети в
    • имени
    • отображаемом имени
    • пользовательских полях интерфейса: IP, DNS, порт, сообщество SNMPv1/SNMPv2, максимальное количество повторений SNMPv2/SNMPv3, количество повторных попыток SNMPv1/SNMPv2/SNMPv3, контекстное имя SNMPv3, имя безопасности SNMPv3, парольная фраза аутентификации SNMPv3, парольная фраза конфиденциальности SNMPv3
    • имени прототипа группы узлов сети
    • значении тега узла сети
    • значении макроса узла сети
    • (см. полный список)

Во всех этих расположениях, кроме фильтра правила низкоуровневого обнаружения, макросы LLD можно использовать внутри статического контекста пользовательского макроса.

Использование функций макросов

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

Например, для добавления тегов к событиям может потребоваться извлечь имя клиента и номер интерфейса из следующего макроса LLD:

{#IFALIAS}=customername_1

Для этого в поле значения тега события прототипа триггера можно использовать функцию макроса regsub вместе с макросом:

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

net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]

Дополнительную информацию о синтаксисе функций макросов см. в разделе Функции макросов

Функции макросов поддерживаются в макросах низкоуровневого обнаружения начиная с Zabbix 4.0.

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

Когда параметры ключа элемента данных не используются, поместите макрос LLD внутри скобок параметра ключа элемента данных [...], чтобы он обрабатывался как параметр и подставлялся во время обнаружения:

v_[{#MACRO}]
Примечания

1 В полях, отмеченных 1, один макрос должен заполнять целое поле. Несколько макросов в одном поле или макросы вперемешку с текстом не поддерживаются.