[comment]: # ({c176fd71-2d9d6e33})
# 5 Makra wykrywania niskiego poziomu

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

[comment]: # ({26d00724-bb12a85a})
#### Przegląd

Istnieje typ makra używanego w funkcji [low-level discovery](/manual/discovery/low_level_discovery) (LLD):

```default
{#MACRO} 
```

Jest to makro używane w regule LLD, które zwraca rzeczywiste wartości nazwy systemu plików, interfejsu sieciowego, SNMP OID itp.

Te makra mogą być używane do tworzenia prototypów encji (pozycja, wyzwalacz, wykres, reguła LLD, prototyp hosta i grupy hostów).
Podczas wykrywania rzeczywistych [systemów plików](/manual/discovery/low_level_discovery/examples/mounted_filesystems), [interfejsów sieciowych](/manual/discovery/low_level_discovery/examples/network_interfaces), [maszyn wirtualnych](/manual/vm_monitoring) itp. makra te są zastępowane rzeczywistymi wartościami i stanowią podstawę do tworzenia rzeczywistych encji.

Niektóre makra low-level discovery są dostarczane „w pakiecie” z funkcją LLD w Zabbix — {\#FSNAME}, {\#FSTYPE}, {\#IFNAME}, {\#SNMPINDEX}, {\#SNMPVALUE}.
Jednak podczas tworzenia [niestandardowej](/manual/discovery/low_level_discovery/custom_rules) reguły low-level discovery nie ma obowiązku stosowania tych nazw.
Możesz wtedy użyć dowolnej innej nazwy makra LLD i odwoływać się do tej nazwy.

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

[comment]: # ({fe3a506a-ab24d69c})
#### Obsługiwane typy danych

Podczas definiowania niestandardowych reguł wykrywania wartości właściwości zwracane w obiektach JSON dla makr LLD muszą być jednym z następujących typów prostych:

-   string
-   number
-   boolean

Tablice, obiekty i wartości null nie są obsługiwane.
Każde makro LLD odwołujące się do takiej wartości pozostanie nierozwinięte i będzie wyświetlane dosłownie (np. `'{#MY_MACRO}'`) podczas wstępnego przetwarzania i tworzenia pozycji.

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

[comment]: # ({1afdb2cd-fc325ce1})
#### Obsługiwane lokalizacje

Makra LLD mogą być używane:

-   w filtrze reguły wykrywania niskiego poziomu
-   dla prototypów pozycji i prototypów wykrywania w
    -   nazwie
    -   parametrach klucza
    -   jednostce
    -   interwale aktualizacji^[1](lld_macros#footnotes)^
    -   czasie limitu^[1](lld_macros#footnotes)^
    -   okresie przechowywania historii^[1](lld_macros#footnotes)^
    -   okresie przechowywania trendów^[1](lld_macros#footnotes)^
    -   krokach przetwarzania wstępnego wartości pozycji
    -   SNMP OID
    -   polu czujnika IPMI
    -   wyrażeniu pozycji obliczanej/agregowanej, w:
        -   stałych wyrażenia i parametrach funkcji
        -   parametrach klucza pozycji
    -   warunkach filtra pozycji agregowanej (nazwa grupy hostów i nazwa tagu)
    -   skrypcie SSH i skrypcie Telnet
    -   zapytaniu SQL monitorowania bazy danych
    -   polu punktu końcowego pozycji JMX
    -   opisie
    -   polu URL agenta HTTP
    -   polu pól zapytania HTTP agenta HTTP
    -   polu treści żądania agenta HTTP
    -   polu wymaganych kodów statusu agenta HTTP
    -   kluczu i wartości pól nagłówków agenta HTTP
    -   polu nazwy użytkownika uwierzytelniania HTTP agenta HTTP
    -   polu hasła uwierzytelniania HTTP agenta HTTP
    -   polu proxy HTTP agenta HTTP
    -   polu pliku certyfikatu SSL HTTP agenta HTTP
    -   polu pliku klucza SSL HTTP agenta HTTP
    -   polu hasła klucza SSL HTTP agenta HTTP
    -   tagach
-   dla prototypów wyzwalaczy w
    -   nazwie
    -   danych operacyjnych
    -   wyrażeniu (tylko w stałych i parametrach funkcji)
    -   URL
    -   opisie
    -   tagach
-   dla prototypów wykresów w
    -   nazwie
-   dla prototypów hostów w
    -   nazwie
    -   nazwie widocznej
    -   niestandardowych polach interfejsu: IP, DNS, port, SNMP v1/v2 community, SNMP v3 context name, SNMP v3 security name, SNMP v3 authentication passphrase, SNMP v3 privacy passphrase
    -   nazwie prototypu grupy hostów
    -   wartości tagu hosta
    -   wartości makra hosta
    -   (zobacz [pełną listę](/manual/vm_monitoring/discovery_fields))

We wszystkich tych miejscach, z wyjątkiem filtra reguły wykrywania niskiego poziomu, makra LLD mogą być używane wewnątrz statycznego [kontekstu makra użytkownika](/manual/config/macros/user_macros_context).

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

[comment]: # ({eb8eceaa-5b26ab61})
#### Używanie funkcji makr

Funkcje makr są obsługiwane w makrach niskopoziomowego wykrywania, z wyjątkiem [filtra](/manual/discovery/low_level_discovery#filter) reguły niskopoziomowego wykrywania, i umożliwiają wyodrębnienie określonej części wartości makra za pomocą wyrażenia regularnego.

Na przykład możesz chcieć wyodrębnić nazwę klienta i numer interfejsu z następującego makra LLD na potrzeby tagowania zdarzeń:

```default
{#IFALIAS}=customername_1
```

Aby to zrobić, można użyć funkcji makra `regsub` z makrem w polu wartości tagu zdarzenia w prototypie wyzwalacza:

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

Zwróć uwagę, że przecinki nie są dozwolone w nieujętych w cudzysłów [parametrach klucza](/manual/config/items/item/key#key-parameters) pozycji, dlatego parametr zawierający funkcję makra musi być ujęty w cudzysłów.
Do poprzedzenia podwójnych cudzysłowów wewnątrz parametru znakiem ucieczki należy użyć znaku ukośnika odwrotnego (`\`).
Przykład:

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

Więcej informacji o składni funkcji makr można znaleźć tutaj: [Funkcje makr](/manual/config/macros/macro_functions)

Funkcje makr są obsługiwane w makrach niskopoziomowego wykrywania od wersji Zabbix 4.0.

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

[comment]: # ({e463c54b-25a5f07d})
##### Prototypy pozycji bez parametrów klucza

Gdy parametry klucza pozycji nie są używane, umieść makro LLD w nawiasach parametru [klucza pozycji](/manual/config/items/item/key) `[...]`, aby było traktowane jako parametr i podstawiane podczas wykrywania:

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

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

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

^**1**^ W polach oznaczonych ^[1](lld_macros#footnotes)^ pojedyncze makro musi wypełniać całe pole.
Wiele makr w polu lub makra zmieszane z tekstem nie są obsługiwane.

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