1 Funcions de macro

Vista general

Les funcions de macro ofereixen la possibilitat de personalitzar els valors macro.

De vegades, una macro pot resoldre un valor amb el qual no necessàriament és fàcil de treballar. Pot ser llarg o contindre una subcadena específica d'interès que voleu extreure. Aquí és on les funcions macro poden ser útils.

La sintaxi d'una funció macro és:

 {<macro>.<func>(<params>)}

on:

  • <macro>: la macro que cal personalitzar (per exemple, {ITEM.VALUE} o {#LLDMACRO})
  • <func>: la funció que cal aplicar
  • <params>: una llista de paràmetres de funció separada per comes

Els paràmetres s'han de citar si:

  • comencen per espai o cometes dobles
  • contenen parèntesi tancats ")" o una coma

Per exemple:

 {{TIME}.fmttime(format,time_shift)}
        {{ITEM.VALUE}.regsub(patró, sortida)}
        {{#LLDMACRO}.regsub(patró, sortida)}

Funcions de macro admeses

Els paràmetres opcionals de funcions s'indiquen amb <>.

FUNCIÓ
Descripció Configuració Compatible per
fmtnum (dígits)
Format de nombres per controlar el nombre de dígits impresos després del punt decimal. dígits - el nombre de dígits després del punt decimal. No es produirà cap zero final. {ITEM.VALUE}
{ITEM.LASTVALUE}
Macros d'expressió
fmttime (format,<time_shift>)
Format de temps. format - cadena de format obligatori, compatible amb el format de la funció strftime
time_shift - el desplaçament de temps aplicat a l'hora abans del format; hauria de començar per
-<N><time_unit> o +<N><time_unit>, on
N - el nombre d'unitats de temps a sumar o restar;
temps_unit - h (hora), d (dia), w (setmana), M (mes) o y (any).
Des de Zabbix 5.4, el paràmetre time_shift admet operacions de temps en diverses passes i pot incloure / <time_unit> per saltar a l'inici de la unitat de temps (/d - mitjanit, /w - 1r dia de la setmana (dilluns), /M - 1r dia del mes, etc.). Exemples:
-1w - exactament 7 dies enrere;
-1w/w - dilluns de la setmana passada;
-1w/w+1d - dimarts de la setmana passada. < br>Tingueu en compte que les operacions temporals es calculen d'esquerra a dreta sense prioritats. Per exemple, -1M/d+1h/w s'analitzarà com a ((-1M/d)+1h)/w.
{TIME}
iregsub (patró,sortida)
Extracció de subcadenes per concordança d'expressions regulars (no distingeix entre majúscules i minúscules). patró - l'expressió regular que coincideix amb
sortida - les opcions de sortida. \1 - \9 s'admeten els marcadors de posició per capturar grups. \0 retorna el text coincident.
{ITEM.VALUE}
{ITEM.LASTVALUE}
Macros de descoberta de baix nivell (excepte al filtre de regles de descoberta de baix nivell)
regsub (patró,sortida)
Extracció de subcadenes per concordança d'expressions regulars (distingeix entre majúscules i minúscules). patró - l'expressió regular que coincideix
sortida - les opcions de sortida. \1 - \9 s'admeten els marcadors de posició per capturar grups. \0 retorna el text coincident.
{ITEM.VALUE}
{ITEM.LASTVALUE}
Macros de descoberta de baix nivell (excepte al filtre de regles de descoberta de baix nivell)

Si s'empra una funció en una ubicació admesa, però s'aplica a una macro que no admet funcions de macro, aleshores la macro s'avalua com a 'DESCONEGUDA'.

Si el patró no és una expressió regular vàlida, la macro s'avalua com a 'DESCONEGUDA' (excepte per a les macros de descoberta de baix nivell on la funció s'ignorarà en aquest cas i la macro romandrà sense ampliar).

Exemples

Les maneres en què es poden emprar les funcions de macro per personalitzar els valors de macro s'il·lustra als exemples següents sobre valors rebuts:

Valor rebut Macro Sortida
24.3413523 {{ITEM.VALUE}.fmtnum(2)} 24.34
24.3413523 {{ITEM.VALUE}.fmtnum(0)} 24
12:36:01 {{TIME}.fmttime(%B)} Octubre
12:36:01 {{TIME}.fmttime(%d %B,-1M/M)} 1 de setembre
123Línia de registre {{ITEM.VALUE}.regsub(^[0-9]+, problema)} Problema
123 Línia de registre {{ITEM.VALUE}.regsub("^([0-9]+)", "Problema")} Problema
123 Línia de registre {{ITEM.VALUE}.regsub("^([0-9]+)", ID del problema: \1)} ID del problema: 123
Línia de registre {{ITEM.VALUE}.regsub(".*", "ID del problema: \1")} ''ID del problema: ''
MySQL ha fallat l'errno 123 {{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " ID del problema: \1_\2 ")} '' ID del problema: MySQL_123 ''
123 Línia de registre {{ITEM.VALUE}.regsub("([1-9]+", "ID del problema: \1")} *DESCONEGUT* (expressió regular no vàlida)
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} customername
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} 1
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} {{#IFALIAS}.regsub("(.*)_ ([0-9]+", \1)} (expressió regular no vàlida)
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} {$MACRO: "nom del client"}
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} {$MACRO: "1"}
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} {$MACRO:" {{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (expressió regular no vàlida)
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" "{$MACRO:\"nom del client\"}"
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" "{$MACRO:\"1\"}")
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (expressió regular no vàlida)
Visualitzant els valors complets dels elements

Els valors llargs de les macros resoltes {ITEM.VALUE} i {ITEM.LASTVALUE} per als elements de text/registre es trunquen a 20 caràcters en algunes ubicacions de la interfície.

Per veure els valors complets d'aquestes macros, podeu emprar funcions de macro, com ara:

{{ITEM.VALUE}.regsub ("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub ("(.*)", \1)}

Veieu també els detalls de les macros {ITEM.VALUE} i {ITEM.LASTVALUE}.