1 Funcions macro
Vista general
Les funcions de macro ofereixen la possibilitat de personalitzar els valors macro (per exemple, escurçar o extreure subcadenes específiques), facilitant-ne el treball.
La sintaxi d'una funció macro és:
{macro.func(params)}
on
- macro - la macro per personalitzar;
- func - la funció que cal aplicar (veieu funcions compatibles);
- params - una llista delimitada per comes de paràmetres de funció, que s'ha de entre cometes si:
- començar amb un espai o cometes dobles;
- continguin parèntesis de tancament o una coma.
Per exemple:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(patró, sortida)}
{{$USERMACRO}.regsub(patró, sortida)}
{{#LLDMACRO}.regsub(patró, sortida)}
Les funcions de macro són compatibles amb:
Les funcions de macro es poden utilitzar a totes les ubicacions que admeten les macros enumerades. Això s'aplica tret que s'indiqui explícitament que només s'espera una macro (per exemple, quan es configura macros d'equip o filtres de regla de descoberta de baix nivell).
Veieu també: problemes coneguts
S'admet una única funció per macro; no s'admeten pas múltiples funcions de macro en cadena.
Veieu exemples d'escapament per als casos en què s'empren funcions de macro en altres contextos (funció, clau d'element, una altra macro, etc.).
Funcions compatibles
Les funcions es llisten sense informació addicional. Feu clic a la funció per veure'n tots els detalls.
| Funció | Descripció |
|---|---|
| btoa | Codificació del valor de la macro en format Base64. |
| fmtnum | Format de nombres per controlar el nombre de dígits impresos després del punt decimal. |
| fmttime | Format de l'hora. |
| htmldecode | Decodificació del valor de la macro des de la codificació HTML. |
| htmlencode | Codificació del valor de la macro en codificació HTML. |
| iregsub | Extracció de subcadenes mitjançant una coincidència d'expressió regular (no distingeix entre majúscules i minúscules). |
| lowercase | Transformació de caràcters de valor macro en minúscules. |
| regrepl | Substitució de caràcter/subcadena en el valor de la macro. |
| regsub | Extracció de subcadenes mitjançant una coincidència d'expressió regular (distingeix entre majúscules i minúscules). |
| tr | Transliteració de caràcters de valor macro. |
| [uppercase(#uppercase) | Transformació de caràcters de valor macro en majúscules. |
| urldecode | Decodificació del valor de la macro a partir de la codificació d'URL. |
| urlencode | Codificació del valor de la macro en la codificació d'URL. |
Detalls de la funció
Els paràmetres de funció opcionals s'indiquen amb < >.
btoa
Codificació d'un valor de macro en codificació Base64. La codificació Base64 és un mètode per representar dades binàries com a text, útil per emmagatzemar i transmetre contingut binari mitjançant protocols segurs basats en text.
Exemple:
{{ITEM.VALUE}.btoa()} - codificarà en Base64 un valor com ara "zabbix" a "emFiYml4"
S'admet aquesta funció des de Zabbix 7.0.4.
fmtnum(dígits)
Format de nombre per controlar el nombre de dígits impresos després del punt decimal.
Paràmetres:
- dígits - el nombre de dígits després del punt decimal. Interval vàlid: 0-20. No es generaran zeros al final.
Exemples:
{{ITEM.VALUE}.fmtnum(2)} - retornarà "24.34" per el valor rebut "24.3413523"
{{ITEM.VALUE}.fmtnum(0)}`|- retornarà "24" per el valor rebut "24.3413523"
fmttime(format,<time_shift>)
Format de l'hora.
Tingueu en compte que aquesta funció es pot emprar amb macros que es resolen en un valor en un dels formats d'hora següents:
hh:mm:ssaaaa-mm-ddThh:mm:ss[tz](estàndard ISO8601)- Unix timestamp
Paràmetres:
- format - cadena de format obligatori, compatible amb el format de la funció
strftime; - time_shift (opcional) - el canvi de temps aplicat a l'hora abans del format; hauria de començar amb
-<N><time_unit>o+<N><time_unit>, on:
N- el nombre d'unitats de temps per sumar o restar;time_unit- h (hora), d (dia), w (setmana), M (mes) o y (any).
Comentaris:
- El paràmetre
time_shiftadmet operacions de temps de diversos passos i pot incloure/<time_unit>per canviar al començament de la unitat de temps (/d- mitjanit,/w- 1r dia de la setmana (dilluns),/M- 1r dia del mes, etc.). Exemples: "-1w" - exactament fa 7 dies;-1w/w- dilluns de la setmana anterior;-1w/w+1d- dimarts de la setmana anterior. - Les operacions de temps es calculen d'esquerra a dreta sense prioritats. Per exemple,
-1M/d+1h/ws'analitzarà com a((-1M/d)+1h)/w.
Exemples:
{{TIME}.fmttime(%B)} - retornarà "Octubre" si rep un valor com ara "1633098961"
{{TIME}.fmttime(%d %B,-1M/M)} - retornarà "1er de Setembre" si rep un valor com ara "1633098961"
htmldecode
Descodificació d'un valor de macro a partir de la codificació HTML. S'admet aquesta funció des de Zabbix 7.0.4. Suporta els caràcters següents:
| Valor | Valor descodificat |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Exemple:
{{ITEM.VALUE}.htmldecode()} - descodificarà amb HTML un valor com ara "<" a "<"
htmlencode
Codificació d'un valor de macro a partir de la codificació HTML. Aquesta funció és compatible des de Zabbix 7.0.4.
Admet els caràcters següents:
| Valor | Valor codificat |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Exemple:
{{ITEM.VALUE}.htmldecode()} - codifica amb HTML un valor com ara "<" a "<"
iregsub(patró, sortida)
Extracció de subcadenes mitjançant una coincidència d'expressió regular (no distingeix entre majúscules i minúscules).
Paràmetres:
- patró - l'expressió regular a coincidir;
- sortida - les opcions de sortida. \1 - \9 s'admeten els marcadors de posició per capturar grups. \0 retorna el text coincident.
Comentaris:
- Si no hi ha cap coincidència per a l'expressió regular, la funció retorna una cadena buida.
- Si el patró de funció és una expressió regular incorrecta, la macro s'avalua com a 'DESCONEGUT' (excepte les macros de descoberta de baix nivell, en aquest cas la funció s'ignorarà i la macro romandrà sense resoldre).
- Les referències a grups de captura inexistents a la cadena de substitució es substitueixen per una cadena buida.
Exemple:
{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")}: es resoldrà en "ERROR" si es reben les subcadenes "fail", "error", "fault" o "problem" (no distingeix entre majúscules i minúscules); i una cadena buida si no hi ha coincidència
minúscules
Transformació de tots els caràcters de valor macro a minúscules. Funciona amb jocs de caràcters d'un sol octet (com ara ASCII) i no és compatible amb UTF-8. Aquesta funció s'admet des de Zabbix 7.0.4.
Exemple:
{{ITEM.VALUE}.lowercase()} - transformarà un valor com "Zabbix SERVER" a "zabbix server" (en minúscula)
regrepl(patró,substitució,<patró2>,<substitució2>,...)
Substitució de caràcter/subcadena en el valor de la macro.
Tingueu en compte que aquesta funció només és compatible amb la biblioteca libcre2.
Si el servidor/proxy Zabbix es va compilar amb libpcre, aquesta funció retornarà DESCONEGUT.
Aquesta funció és compatible des de Zabbix 7.0.4.
Paràmetres:
- patró - l'expressió regular que coincideix;
- reemplaçament - la cadena de substitució. \1 - \9 s'admeten els marcadors de posició a les cadenes de substitució per capturar grups.
Comentaris:
- Els patrons i les substitucions es processen seqüencialment, i cada parell posterior s'aplica d'acord amb el resultat de la substitució anterior;
- Les referències a grups de captura inexistents a la cadena de substitució es substitueixen per una cadena buida.
Exemples:
{{ITEM.VALUE}.regrepl("oldParam", "newParam")}: substitueix "oldParam" per "newParam"
{{ITEM.VALUE}.regrepl("([^a-z])","\\\1")}: escapa tots els caràcters que no siguin lletres amb una barra invertida
{$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - esborrarà una barra invertida (per exemple, canviarà "C:\" per "C:")
{{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")}: substitueix diverses parts del valor de l'element
regsub(patró, sortida)
Extracció de subcadenes mitjançant una coincidència d'expressió regular (distingeix entre majúscules i minúscules).
Paràmetres:
- 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.
Comentaris:
- Si no hi ha cap coincidència per a l'expressió regular, la funció no retorna res;
- Si el patró de funció és una expressió regular incorrecta, la macro s'avalua com a "DESCONEGUDA" (excepte les macros de descoberta de baix nivell, en aquest cas la funció s'ignorarà i la macro romandrà sense resoldre);
- Les referències a grups de captura inexistents a la cadena de substitució es substitueixen per una cadena buida.
Exemples:
{{ITEM.VALUE}.regsub("^([0-9]+)", ID del problema: \1)}: es resoldrà a "ID del problema: 123" si es rep un valor com "Línia de registre 123"
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")}: es resoldrà en "ERROR" si es reben les subcadenes "fail", "error", "fault" o "problem" (distingeix entre majúscules i minúscules); res si no hi ha coincidència.
Veieu més exemples.
tr(caràcters,reemplaçament)
Transliteració de caràcters de valor macro. Aquesta funció és compatible des de Zabbix 7.0.4.
- caràcters - el conjunt de caràcters a substituir;
- reemplaçament - el conjunt de caràcters de substitució corresponents a la posició.
Exemples:
{{ITEM.VALUE}.tr(abc, xyz)} - substitueix totes les aparicions de a per x, b amb y, c per z
{{ITEM.VALUE}.tr(abc, xyzq)} - substitueix totes les aparicions de a per x, b per y, c per z (s'ignora q)
{{ITEM.VALUE}.tr(abcde, xyz)} - substitueix totes les aparicions de a per x, b per y, c amb z, d amb z, e per z (és a dir, xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")}: substitueix totes les aparicions de barra invertida per barra inclinada, ' per "
{{ITEM.VALUE}.tr(A-Z,a-z)}: converteix totes les lletres a minúscules
{{ITEM.VALUE}.tr(0-9a-z,*)}: substitueix tots els nombres i lletres minúscules per "*"
{{ITEM.VALUE}.tr(0-9,ab)}: substitueix totes les aparicions de 0 per a i totes les aparicions d'1, 2, 3, 4, 5, 6, 7, 8 i 9 per b
{{ITEM.VALUE}.tr(0-9abcA-L,*)}: substitueix tots els nombres, caràcters abc i rang A-L per "*"
{{ITEM.VALUE}.tr("\n","*")}: substitueix les ocurrències de final de línia per *
{{ITEM.VALUE}.tr("e", "\n")}: substitueix totes les "e" al final de la línia
Per incloure caràcters literals:
barra invertida: s'ha d'escapar com a \\
cometes simples - s'ha d'escapar com a \'
cometes dobles: s'ha de fer escapar com a \"
Seqüències d'escapada compatibles amb barra invertida:
\\\\ => \\ - barra invertida doble a barra invertida simple
\\a => \a - alerta
\\b => \b - retrocés
\\f => \f - feed de formulari
\\n => \n - nova línia
\\r => \r - retorn
\\t => \t - pestanya horitzontal
\\v => \v - pestanya vertical
majúscules
Transformació de tots els caràcters de valor macro a majúscules. Funciona amb jocs de caràcters d'un sol octet (com ara ASCII) i no és compatible amb UTF-8. Aquesta funció és compatible des de Zabbix 7.0.4.
Exemple:
{{ITEM.VALUE}.uppercase()} - transforma un valor com "Zabbix Server" a "ZABBIX SERVER" (en majúscules)
urldecode
Descodificació d'un valor de macro a partir de la codificació d'URL. Aquesta funció és compatible des de Zabbix 7.0.4.
Exemple:
{{ITEM.VALUE}.urldecode()} - URL descodifica un valor com ara "%2F" a "/"
urlencode
Codificació d'un valor de macro a partir de la codificació d'URL. Aquesta funció és compatible des de Zabbix 7.0.4.
Exemple:
{{ITEM.VALUE}.urlencode()} - URL codifica un valor com ara "/" a "%2F"
Exemples addicionals
La taula següent mostra més exemples d'ús de funcions macro.
| Funció macro | Valor rebut | Sortida |
|---|---|---|
{{ITEM.VALUE}.regsub(^[0-9]+, problema)} |
123Línia de registre |
Problema |
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problema")} |
123 Línia de registre |
Problema |
{{ITEM.VALUE}.regsub(".*", "ID del problema: \1")} |
Línia de registre |
ID del problema: |
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " ID del problema: \1_\2 ")} |
MySQL ha petat error 123 |
ID del problema: MySQL\_123 |
{{ITEM.VALUE}.regsub("([1-9]+", "ID del problema: \1")} |
123 Línia de registre |
UNKNOWN (expressió regular no vàlida) |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} |
customername_1 |
customername |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} |
nom del client_1 |
1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} |
customername_1 |
{{#IFALIAS}.regsub("(.*)_ ([0-9]+", \1)} (expressió regular no vàlida) |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} |
customername_1 |
{$MACRO: "nom del client"} |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} |
customername_1 |
{$MACRO: "1"} |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} |
customername_1 |
{$MACRO:" {{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (expressió regular no vàlida) |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" |
nom del client_1 |
"{$MACRO:\"nom del client\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" |
nom del client_1 |
"{$MACRO:\"1\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" |
nom del client_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" (expressió regular no vàlida) |
Vista dels 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, per exemple:
{{ITEM.VALUE}.regsub ("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub ("(.*)", \1)}
Veieu també: {ITEM.VALUE} i {ITEM.LASTVALUE} detalls de la macro.