3 Lietotāja makrosi ar kontekstu
Pārskats
Var izmantot neobligātu kontekstu lietotāja makrosos, 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:"static text"}
vai regulārā izteiksme:
{$MACRO:regex:"regular expression"}
Ņ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 ievietošana pēdiņās 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 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
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.