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, один макрос должен заполнять всё поле целиком. Несколько макросов в одном поле или макросы, смешанные с текстом, не поддерживаются.