[comment]: # translation:outdated

[comment]: # ({73d3f62e-73d3f62e})
# 3 Lietotāja makrosi ar kontekstu

[comment]: # ({/73d3f62e-73d3f62e})

[comment]: # ({d01ca156-4232eb11})
#### Pārskats

[user
makros](/manual/config/macros/user_macros) var izmantot neobligātu kontekstu, kas ļauj aizstāt
noklusējuma vērtību ar kontekstam specifisku vērtību.

Konteksts tiek pievienots makrosa nosaukumam; sintakse ir atkarīga no tā, vai
konteksts ir statiska teksta vērtība:

    {$MACRO:"statisks teksts"}

vai regulārā izteiksme:

    {$MACRO:regex:"regulārā izteiksme"} 

Ņemiet vērā, ka makrosu ar regulārās izteiksmes kontekstu var definēt tikai
lietotāja makrosu konfigurācijā. Ja prefikss `regex:` tiek izmantots citur kā
lietotāja makrosa konteksts, piemēram, trigera izteiksmē, tas tiks apstrādāts
kā statisks konteksts.

Konteksta pēdiņu lietošana nav obligāta (skatiet arī [svarīgas
piezīmes](#important-notes)).

Makrosa konteksta piemēri:

|Piemērs|Apraksts|
|-------|-----------|
|`{$LOW_SPACE_LIMIT}`|Lietotāja makross bez konteksta.|
|`{$LOW_SPACE_LIMIT:/tmp}`|Lietotāja makross ar kontekstu (statiska virkne).|
|`{$LOW_SPACE_LIMIT:regex:"^/tmp$"}`|Lietotāja makross ar kontekstu (regulārā izteiksme). Tas pats, kas `{$LOW_SPACE_LIMIT:/tmp}`.|
|`{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"}`|Lietotāja makross ar kontekstu (regulārā izteiksme). Atbilst visām virknēm ar prefiksu /var/log/.|

[comment]: # ({/d01ca156-4232eb11})

[comment]: # ({2a65d6fe-d403a5a0})
#### Lietošanas gadījumi

Lietotāja makrosus ar kontekstu var definēt, lai nodrošinātu elastīgākus
sliekšņus trigeru izteiksmēs (pamatojoties uz vērtībām, kas iegūtas ar
zema līmeņa atklāšanu). Piemēram, varat definēt šādus makrosus:

-   {$LOW\_SPACE\_LIMIT} = 10
-   {$LOW\_SPACE\_LIMIT:/home} = 20
-   {$LOW\_SPACE\_LIMIT:regex:"\^/\[a-z\]+$"} = 30

Pēc tam zema līmeņa atklāšanas makrosu var izmantot kā makrosa kontekstu
trigera prototipā piemontēto failu sistēmu atklāšanai:

    last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

Pēc atklāšanas trigeros tiks piemēroti atšķirīgi zemas brīvās vietas sliekšņi
atkarībā no atklātajiem piemontēšanas punktiem vai failu sistēmu tipiem.
Problēmu notikumi tiks ģenerēti, ja:

-   mapei /home ir mazāk nekā 20% brīvas diska vietas
-   mapēm, kas atbilst regulārās izteiksmes paraugam (piemēram, /etc, /tmp vai /var), ir
    mazāk nekā 30% brīvas diska vietas
-   mapēm, kas neatbilst regulārās izteiksmes paraugam un nav /home, ir
    mazāk nekā 10% brīvas diska vietas

[comment]: # ({/2a65d6fe-d403a5a0})

[comment]: # ({4d28ca51-4d28ca51})
#### Svarīgas piezīmes

-   Ja pastāv vairāk nekā viens lietotāja makross ar kontekstu, Zabbix vispirms mēģinās
    saskaņot vienkāršos konteksta makrosus un pēc tam konteksta makrosus ar
    regulārajām izteiksmēm nenoteiktā secībā.

::: notewarning
Neveidojiet dažādus konteksta makrosus, kas atbilst
tai pašai virknei, lai izvairītos no nenoteiktas darbības.
:::

-   Ja makross ar tā kontekstu netiek atrasts hostā, piesaistītajās veidnēs
    vai globāli, tad tiek meklēts makross bez konteksta.
-   Kontekstā tiek atbalstīti tikai zema līmeņa atklāšanas makrosi. Jebkuri
    citi makrosi tiek ignorēti un apstrādāti kā vienkāršs teksts.

Tehniski makrosa konteksts tiek norādīts, izmantojot noteikumus, kas ir līdzīgi [vienuma
atslēgas](/manual/config/items/item/key) parametriem, izņemot to, ka makrosa konteksts
netiek parsēts kā vairāki parametri, ja tajā ir rakstzīme `,`:

-   Makrosa konteksts jāliek pēdiņās `"` , ja konteksts satur rakstzīmi `}`
    vai sākas ar rakstzīmi `"`. Pēdiņas pēdiņās ietvertā kontekstā ir
    jāekranē ar rakstzīmi `\`.
-   Pati rakstzīme `\` netiek ekranēta, kas nozīmē, ka nav iespējams izveidot
    pēdiņās ietvertu kontekstu, kas beidzas ar rakstzīmi `\` — makross
    {$MACRO:"a:\\b\\c\\"} nav derīgs.
-   Sākuma atstarpes kontekstā tiek ignorētas, beigu atstarpes — nē:
    -   Piemēram, {$MACRO:A} ir tas pats, kas {$MACRO: A}, bet ne
        {$MACRO:A }.
-   Visas atstarpes pirms sākuma pēdiņām un pēc beigu pēdiņām tiek
    ignorētas, bet visas atstarpes pēdiņu iekšpusē — nē:
    -   Makrosi {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } un {$MACRO:
        "A" } ir vienādi, bet makrosi {$MACRO:"A"} un {$MACRO:" A "}
        nav vienādi.

Tālāk norādītie makrosi ir ekvivalenti, jo tiem ir viens un tas pats
konteksts: {$MACRO:A}, {$MACRO: A} un {$MACRO:"A"}. Tas atšķiras no
vienumu atslēgām, kur 'key\[a\]', 'key\[ a\]' un 'key\["a"\]' semantiski
ir vienādi, bet unikalitātes nolūkos atšķiras.

[comment]: # ({/4d28ca51-4d28ca51})
