1 Funcions macro

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.

Totes les funcions enumerades aquí són compatibles amb tot tipus de macros:

Les funcions de macro es poden emprar 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 configuren macros d'equip o filtres de regla de descoberta de baix nivell).

Les funcions es descriuen 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).
minuscules 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.
majúscules 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ó

La sintaxi d'una funció macro és:

 {macro.fun>(params)}
  • ** macro** - la macro que cal personalitzar, com ara {ITEM.VALUE} o {#LLDMACRO};
  • func - la funció que cal aplicar;
  • params - una llista de paràmetres de funció, separades per cometes si:
    • comencen per espai o cometes dobles;
    • contenen parèntesis tancats "``" o coma.

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()} - codifica en Base64 un valor com ara "zabbix" a "emFiYml4"

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:

Funció macro Valor rebut Sortida
{{ITEM.VALUE}.fmtnum(2)} 24.3413523 24.34
{{ITEM.VALUE}.fmtnum(0)} 24.3413523 24

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:ss
  • aaaa-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_shift admet 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/w s'analitzarà com a ((-1M/d)+1h)/w.

Exemples:

Funció macro Valor rebut Sortida
{{TIME}.fmttime(%B)} 12:36:01 Octubre
{{TIME}.fmttime(%d %B,-1M/M)} 12:36:01 1er de setembre

htmldecode

Descodificació d'un valor de macro a partir de la codificació HTML. Suporta els caràcters següents:

Valor Valor descodificat
& &
< <
> >
" "
' '
' '

Exemple:

{{ITEM.VALUE}.htmldecode()} - descodifica amb HTML un valor com ara "<" a "<"

htmldecode

Descodificació d'un valor de macro a partir de la codificació HTML. Admet els caràcters següents:

Valor Valor descodificat
& &
< <
> >
" "
' '
' '

Exemple:

{{ITEM.VALUE}.htmldecode()} - descodifica 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 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).

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.

Exemple:

{{ITEM.VALUE}.lowercase()} - transforma 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 libpcre2. Si el servidor/proxy Zabbix es va compilar amb libpcre, aquesta funció retornarà DESCONEGUT.

Paràmetres:

  • patró - l'expressió regular que coincideix;
  • reemplaçament - la cadena de substitució.

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;
  • Aquesta funció també permet fer referència a grups capturats en cadenes de substitució emprant marcadors de posició \1 a \9.

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
       {{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 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).

Exemples:

Funció macro Valor rebut Sortida
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} 123Log line Problem
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} 123 Log line Problem
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} 123 Log line Problem ID: 123
{{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} Log line ''Problem ID: ''
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} MySQL crashed errno 123 '' Problem ID: MySQL_123''
{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} 123 Log line *UNKNOWN* (invalid regular expression)
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} customername_1 customername
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} customername_1 1
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (invalid regular expression)
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} customername_1 {$MACRO:"customername"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} customername_1 {$MACRO:"1"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} customername_1 {$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (invalid regular expression)
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" customername_1 "{$MACRO:\"customername\"}"
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" customername_1 "{$MACRO:\"1\"}")
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (invalid regular expression)

tr(caràcters,reemplaçament)

Transliteració de caràcters de valor macro.

  • 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)}: substituïu totes les aparicions de "a" per "x", "b" per "y", "c" per "z"
       {{ITEM.VALUE}.tr(abc, xyzq)}: substituïu totes les aparicions de "a" per "x", "b" per "y", "c" per "z" ("s'ignora q")
       {{ITEM.VALUE}.tr(abcde, xyz)}: substituïu totes les aparicions de "a" per "x", "b" per "y", "c" per "z", "d" per "z" , "e" amb "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,*)}: substituïu tots els números i lletres minúscules per "*"
       {{ITEM.VALUE}.tr(0-9,ab)}: substituïu totes les ocurrències de 0 per "a" i substituïu totes les aparicions d'1, 2, 3, 4, 5, 6, 7, 8 i 9 amb "b"
       {{ITEM.VALUE}.tr(0-9abcA-L,*)}: substituïu tots els números, els caràcters "abc" i l'interval A-L per "*"
       {{ITEM.VALUE}.tr("\n","*")}: substitueix les ocurrències de final de línia per *
       {{ITEM.VALUE}.tr("e", "\n")}: substituïu 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 d'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.

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.

Exemple:

{{ITEM.VALUE}.urldecode()} - URL descodifica un valor com ara "%2F" a "/"

urlencode

Codificar un valor de macro a cap a codificació d'URL.

Exemple:

{{ITEM.VALUE}.urlencode()} - URL-codifica un valor com ara "/" a "%2F"