Lietotāja makro ar kontekstu
Pārskats
user makros 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).
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/. |
Lietošanas gadījumi
Lietotāja makro ar kontekstu var definēt, lai izveidotu elastīgākus sliekšņus trigeru izteiksmēs (pamatojoties uz vērtībām, kas iegūtas ar zemā līmeņa atklāšanu). Piemēram, varat definēt šādus makro:
- {$LOW_SPACE_LIMIT} = 10
- {$LOW_SPACE_LIMIT:/home} = 20
- {$LOW_SPACE_LIMIT:regex:"^/[a-z]+$"} = 30
Pēc tam zemā līmeņa atklāšanas makro var izmantot kā makro kontekstu trigeru prototipā piemontētas failu sistēmas atklāšanai:
last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}
Pēc atklāšanas trigeros tiks piemēroti dažādi zema brīvās vietas sliekšņi atkarībā no atklātajiem montēšanas punktiem vai failu sistēmu tipiem. Problēmu notikumi tiks ģenerēti, ja:
- /home mapē būs mazāk nekā 20% brīvās diska vietas
- mapēm, kas atbilst regulārās izteiksmes paraugam (piemēram, /etc, /tmp vai /var), būs mazāk nekā 30% brīvās diska vietas
- mapēm, kas neatbilst regulārās izteiksmes paraugam un nav /home, būs mazāk nekā 10% brīvās diska vietas
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ā.
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 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.