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

Обзор

Существует тип макроса, используемый в функции низкоуровневого обнаружения (LLD):

{#MACRO} 

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

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

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

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

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

  • string
  • number
  • boolean

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

Поддерживаемые места

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

  • в фильтре правила низкоуровневого обнаружения
  • для прототипов элементов данных и прототипов обнаружения в
    • имени
    • параметрах ключа
    • единице измерения
    • интервале обновления1
    • тайм-ауте1
    • периоде хранения истории1
    • периоде хранения трендов1
    • шагах предварительной обработки значения элемента данных
    • SNMP OID
    • поле датчика IPMI
    • выражении вычисляемого/агрегированного элемента данных, в:
      • константах выражения и параметрах функций
      • параметрах ключа элемента данных
    • условиях фильтра агрегированного элемента данных (имя группы узлов сети и имя тега)
    • SSH-скрипте и Telnet-скрипте
    • SQL-запросе мониторинга базы данных
    • поле endpoint элемента JMX
    • описании
    • поле URL агента HTTP
    • поле HTTP-запроса агента HTTP
    • поле тела запроса агента HTTP
    • поле требуемых кодов состояния агента HTTP
    • ключе и значении полей заголовков агента HTTP
    • поле имени пользователя для HTTP-аутентификации агента HTTP
    • поле пароля для HTTP-аутентификации агента HTTP
    • поле HTTP-прокси агента HTTP
    • поле файла HTTP SSL-сертификата агента HTTP
    • поле файла HTTP SSL-ключа агента HTTP
    • поле пароля HTTP SSL-ключа агента HTTP
    • тегах
  • для прототипов триггеров в
    • имени
    • оперативных данных
    • выражении (только в константах и параметрах функций)
    • URL
    • описании
    • тегах
  • для прототипов графиков в
    • имени
  • для прототипов узлов сети в
    • имени
    • видимом имени
    • настраиваемых полях интерфейса: IP, DNS, порт, SNMP v1/v2 community, SNMP v3 context name, SNMP v3 security name, SNMP v3 authentication passphrase, SNMP v3 privacy passphrase
    • имени прототипа группы узлов сети
    • значении тега узла сети
    • значении макроса узла сети
    • (см. полный список)

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

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

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

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

{#IFALIAS}=имяклиента_1

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

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

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

Для получения более подробных сведений о синтаксисе функций макросов смотрите: Функции макросов

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

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

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

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

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