Lietotāja makro ar kontekstu
Pārskats
lietotāja makros var izmantot neobligātu kontekstu, kas ļauj noklusējuma vērtību aizstāt ar kontekstam specifisku vērtību.
Konteksts tiek pievienots makro nosaukumam; sintakse ir atkarīga no tā, vai konteksts ir statiska teksta vērtība:
{$MACRO:"static text"}
vai regulāra izteiksme:
{$MACRO:regex:"regular expression"}
Ņemiet vērā, ka makro ar regulāras izteiksmes kontekstu var definēt tikai lietotāja makro konfigurācijā. Ja prefikss regex: tiek izmantots citur kā lietotāja makro konteksts, piemēram, trigeru izteiksmē, tas tiks interpretēts kā statisks konteksts.
Konteksta ietveršana pēdiņās nav obligāta (skatiet arī svarīgas piezīmes).
Makro konteksta piemēri:
| Piemērs | Apraksts |
|---|---|
{$LOW_SPACE_LIMIT} |
Lietotāja makro bez konteksta. |
{$LOW_SPACE_LIMIT:/tmp} |
Lietotāja makro ar kontekstu (statiska virkne). |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
Lietotāja makro ar kontekstu (regulāra izteiksme). Tas ir tāds pats kā {$LOW_SPACE_LIMIT:/tmp}. |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
Lietotāja makro ar kontekstu (regulāra izteiksme). Atbilst visām virknēm, kas sākas ar /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.