3 Macros d'usuari amb context

Vista general

Es pot emprar un context opcional a macros d'usuari, permetent que el valor predeterminat es substitueixi per un valor específic del context.

El context s'afegeix al nom de la macro; la sintaxi varia en funció de si el context és un valor de text estàtic:

 {$MACRO:"text estàtic"}

o una expressió regular:

 {$MACRO:regex:"expressió regular"}

Tingueu en compte que una macro amb un context d'expressió regular només es pot definir a la configuració de la macro d'usuari. Si el prefix regex: s'empra en un altre lloc com a context de macro d'usuari, com ara en una expressió de trigger, es tractarà com un context estàtic.

La citació contextual és opcional (veieu també les notes importants).

Exemples de macrocontext:

Exemple Descripció
{$LOW_SPACE_LIMIT} Macro d'usuari sense context.
{$LOW_SPACE_LIMIT:/tmp} Macro d'usuari amb context (cadena estàtica).
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} Macro d'usuari amb context (regex). Igual que {$LOW_SPACE_LIMIT:/tmp}.
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} Macro d'usuari amb context (regex). Coincideix amb totes les cadenes amb el prefix /var/log/.

Cas d'ús

Es poden definir macros d'usuari amb context per aconseguir llindars més flexibles en expressions de triggers (basades en valors recuperats per descoberta de baix nivell). Per exemple, podeu definir les macros següents:

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

Tot seguit, es pot emprar una macro de descoberta de baix nivell com a context de macro en un prototip de trigger per a la descoberta del sistema de fitxers muntat:

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

Després de la descoberta, s'aplicaran diferents llindars d'espai sota els triggers en funció dels punts de muntatge o dels tipus de sistema de fitxers descoberts. Es generaran esdeveniments de problemes si:

  • la carpeta /home té menys d'un 20% d'espai lliure al disc
  • Les carpetes que coincideixen amb el patró d'expressió regular (com /etc, /tmp o /var) tenen menys del 30% d'espai lliure en disc
  • Les carpetes que no coincideixen amb el patró d'expressió regular i no són /home tenen menys del 10% d'espai lliure en disc

Notes importants

  • Si hi ha diverses macros d'usuari amb context, Zabbix mirarà de fer coincidir macros de context simples primer, després macros de context amb expressions regulars en ordre no definit.

No creeu macros de context diferents que coincideixin amb la mateixa cadena per evitar un comportament no definit.

  • Si una macro amb el seu context no es troba a l'equip, en models enllaçats o globalment, es cerca la macro sense context.
  • Només s'admeten macros de descoberta de baix nivell en context. La resta de macros s'ignoren i es tracten com a text sense format.

Tècnicament, el context de la macro s'especifica mitjançant regles similars als paràmetres clau d'element, excepte que el context de la macro no s'analitzi com a paràmetres múltiples per haver-hi un caràcter ,:

  • El context de la macro s'ha de citar amb " si el context conté un caràcter } o comença amb un caràcter ". Les cometes dins del context citat s'han d'escapar amb el caràcter \.
  • El caràcter \ en si no s'escapa, la qual cosa significa que és impossible tindre un context entre cometes que acabi amb el caràcter \ - la macro {$MACRO:"a:\ b\c\"} és invàlid.
  • Els espais inicials en el context s'ignoren, els espais finals no són:
    • Per exemple {$MACRO:A} és idèntic a {$MACRO:A}, però no a {$MACRO:A }.
  • Tots els espais abans de les cometes inicials i després de les cometes finals s'ignoren, però tots els espais dins de les cometes no ho són:
    • Les macros {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } i {$MACRO: "A" } són idèntiques, però les macros { $MACRO:"A"} i {$MACRO:"A"} no ho són.

Les macros següents són equivalents perquè tenen el mateix context: {$MACRO:A}, {$MACRO:A} i {$MACRO:"A"}. Això contrasta amb les claus d'element, on "clau[a]", "clau[a]" i "clau["a"]" són semànticament iguals, però diferents per a finalitats d'unicitat.