[comment]: # ({c176fd71-2d9d6e33})
# 5. Макросы низкоуровневого обнаружения 

[comment]: # ({/c176fd71-2d9d6e33})

[comment]: # ({26d00724-bb12a85a})
#### Обзор

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

```default
{#MACRO} 
```

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

Эти макросы можно использовать для создания прототипов сущностей (элемент данных, триггер, график, правило LLD, прототип узла сети и прототипа группы узлов сети).
Во время обнаружения реальных [файловых систем](/manual/discovery/low_level_discovery/examples/mounted_filesystems), [сетевых интерфейсов](/manual/discovery/low_level_discovery/examples/network_interfaces), [виртуальных машин](/manual/vm_monitoring) и т. д. эти макросы подставляются реальными значениями и служат основой для создания реальных сущностей.

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

[comment]: # ({/26d00724-bb12a85a})

[comment]: # ({fe3a506a-ab24d69c})
#### Поддерживаемые типы данных

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

-   string
-   number
-   boolean

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

[comment]: # ({/fe3a506a-ab24d69c})

[comment]: # ({1afdb2cd-fc325ce1})
#### Поддерживаемые места

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

-   в фильтре правила низкоуровневого обнаружения
-   для прототипов элементов данных и прототипов обнаружения в
    -   имени
    -   параметрах ключа
    -   единице измерения
    -   интервале обновления^[1](lld_macros#footnotes)^
    -   тайм-ауте^[1](lld_macros#footnotes)^
    -   периоде хранения истории^[1](lld_macros#footnotes)^
    -   периоде хранения трендов^[1](lld_macros#footnotes)^
    -   шагах предварительной обработки значения элемента данных
    -   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
    -   имени прототипа группы узлов сети
    -   значении тега узла сети
    -   значении макроса узла сети
    -   (см. [полный список](/manual/vm_monitoring/discovery_fields))

Во всех этих местах, кроме фильтра правила низкоуровневого обнаружения, макросы LLD можно использовать внутри статического [контекста макроса](/manual/config/macros/user_macros_context).

[comment]: # ({/1afdb2cd-fc325ce1})

[comment]: # ({eb8eceaa-5b26ab61})
#### Использование функций макросов

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

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

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

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

![](../../../../assets/en/manual/config/macros/lld_macro_function.png)

Обратите внимание, что запятые не разрешены в не заключённых в кавычки [параметрах ключей](/manual/config/items/item/key#параметры-ключа) элементов данных, поэтому параметр, содержащий функцию макроса, необходимо заключить в кавычки.
Символ обратной косой черты (`\`) следует использовать для экранирования двойных кавычек внутри параметра.
Например:

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

Для получения более подробных сведений о синтаксисе функций макросов смотрите: [Функции макросов](/manual/config/macros/macro_functions)

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

[comment]: # ({/eb8eceaa-5b26ab61})

[comment]: # ({e463c54b-25a5f07d})
##### Прототипы элементов данных без параметров ключа

Когда параметры ключа элемента данных не используются, поместите LLD-макрос внутрь квадратных скобок `[...]` параметров [ключа элемента данных](/manual/config/items/item/key), чтобы он рассматривался в качестве параметра и подставлялся во время обнаружения:

```default
v_[{#MACRO}]
```

[comment]: # ({/e463c54b-25a5f07d})

[comment]: # ({47156e66-573cd0dc})
##### Примечания

^**1**^ В полях, отмеченных ^[1](lld_macros#примечания)^, один макрос должен заполнять целое поле.
Несколько макросов в одном поле или макросы вперемешку с текстом не поддерживаются.

[comment]: # ({/47156e66-573cd0dc})
