Las funciones de macro ofrecen la capacidad de personalizar los valores de las macros (por ejemplo, acortar o extraer subcadenas específicas), lo que facilita su manejo.
La sintaxis de una función de macro es:
donde
Por ejemplo:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{$USERMACRO}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}
Las funciones de macro son compatibles con:
Las funciones de macro pueden utilizarse en todas las ubicaciones que admitan las macros enumeradas. Esto se aplica a menos que se indique explícitamente que solo se espera una macro (por ejemplo, al configurar macros de host o filtros de reglas de descubrimiento de bajo nivel).
Consulte también: problemas conocidos.
Se admite una sola función por macro; no se admiten varias funciones de macro en cadena.
Consulte ejemplos de escape para los casos en que las funciones de macro se utilizan dentro de otros contextos (función, clave de elemento, otra macro, etc).
Las funciones se enumeran sin información adicional. Haga clic en la función para ver los detalles completos.
Función | Descripción |
---|---|
btoa | Codificación del valor de la macro en formato Base64. |
fmtnum | Formato de número para controlar el número de dígitos impresos después del punto decimal. |
fmttime | Formato de hora. |
htmldecode | Decodificación del valor de la macro desde la codificación HTML. |
htmlencode | Codificación del valor de la macro en codificación HTML. |
iregsub | Extracción de subcadena por coincidencia de expresión regular (no distingue mayúsculas/minúsculas). |
lowercase | Transformación de los caracteres del valor de la macro a minúsculas. |
regrepl | Reemplazo de carácter/subcadena en el valor de la macro. |
regsub | Extracción de subcadena por coincidencia de expresión regular (distingue mayúsculas/minúsculas). |
tr | Transliteración de los caracteres del valor de la macro. |
uppercase | Transformación de los caracteres del valor de la macro a mayúsculas. |
urldecode | Decodificación del valor de la macro desde la codificación URL. |
urlencode | Codificación del valor de la macro en codificación URL. |
Los parámetros opcionales de la función se indican mediante < >.
Codificación de un valor de macro en codificación Base64. La codificación Base64 es un método para representar datos binarios como texto, útil para almacenar y transmitir de forma segura contenido binario a través de protocolos basados en texto.
Ejemplo:
Esta función es compatible desde Zabbix 7.0.4.
Formato de número para controlar el número de dígitos impresos después del punto decimal.
Parámetros:
Ejemplos:
{{ITEM.VALUE}.fmtnum(2)} - devolverá "24.35" a partir de un valor recibido de "24.3483523"
{{ITEM.VALUE}.fmtnum(0)} - devolverá "24" a partir de un valor recibido de "24.3483523"
Formateo de tiempo.
Tenga en cuenta que esta función puede utilizarse con macros que se resuelven en un valor en uno de los siguientes formatos de tiempo:
hh:mm:ss
yyyy-mm-ddThh:mm:ss[tz]
(estándar ISO8601)Parámetros:
strftime
;-<N><time_unit>
o +<N><time_unit>
, donde:N
- el número de unidades de tiempo a sumar o restar;time_unit
- h (hora), d (día), w (semana), M (mes) o y (año).Comentarios:
time_shift
admite operaciones de tiempo en varios pasos y puede incluir /<time_unit>
para desplazar al inicio de la unidad de tiempo (/d
- medianoche, /w
- primer día de la semana (lunes), /M
- primer día del mes, etc.). Ejemplos: -1w
- exactamente 7 días atrás; -1w/w
- lunes de la semana anterior; -1w/w+1d
- martes de la semana anterior.-1M/d+1h/w
se analizará como ((-1M/d)+1h)/w
.Ejemplos:
{{TIME}.fmttime(%B)} - devolverá "octubre" a partir de un valor recibido de "1633098961"
{{TIME}.fmttime(%d %B,-1M/M)} - devolverá "1 septiembre" a partir de un valor recibido de "1633098961"
Decodificación de un valor de macro desde la codificación HTML. Esta función es compatible desde Zabbix 7.0.4.
Se admiten los siguientes caracteres:
Valor | Valor decodificado |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Ejemplo:
Codificación de un valor de macro en codificación HTML. Esta función es compatible desde Zabbix 7.0.4.
Se admiten los siguientes caracteres:
Valor | Valor codificado |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Ejemplo:
Extracción de subcadenas mediante una coincidencia de expresión regular (sin distinguir mayúsculas de minúsculas).
Parámetros:
Comentarios:
Ejemplo:
{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - se resolverá como "ERROR" si se reciben las subcadenas "fail", "error", "fault" o "problem" (sin distinguir mayúsculas de minúsculas); devolverá una cadena vacía si no hay coincidencia
Transformación de todos los caracteres del valor de la macro a minúsculas. Funciona con conjuntos de caracteres de un solo byte (como ASCII) y no admite UTF-8. Esta función es compatible desde Zabbix 7.0.4.
Ejemplo:
{{ITEM.VALUE}.lowercase()} - transformará un valor como "Zabbix SERVER" en "zabbix server" (minúsculas)
Reemplazo de carácter/subcadena en el valor de la macro. Tenga en cuenta que esta función solo es compatible con la biblioteca libpcre2. Si el servidor/proxy de Zabbix se compiló con libpcre
, esta función devolverá UNKNOWN. Esta función es compatible desde Zabbix 7.0.4.
Parámetros:
Comentarios:
Ejemplos:
{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - reemplazará "oldParam" por "newParam"
{{ITEM.VALUE}.regrepl("([^a-z])","\\\1")} - todos los caracteres que no sean letras se escaparán con una barra invertida
{$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - eliminará una barra invertida al final (por ejemplo, para reemplazar "C:\" por "C:")
{{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - reemplazará varias partes en el valor del elemento
Extracción de subcadenas mediante una coincidencia de expresión regular (sensible a mayúsculas y minúsculas).
Parámetros:
Comentarios:
Ejemplos:
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - se resolverá como "Problem ID: 123" si se recibe un valor como "123 Log line"
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - se resolverá como "ERROR" si se reciben subcadenas como "fail", "error", "fault" o "problem" (sensible a mayúsculas y minúsculas); devolverá una cadena vacía si no hay coincidencia
Vea más ejemplos.
Transliteración de los caracteres del valor de la macro. Esta función es compatible desde Zabbix 7.0.4.
Ejemplos:
{{ITEM.VALUE}.tr(abc, xyz)} - reemplazará todas las apariciones de "a" por "x", "b" por "y", "c" por "z"
{{ITEM.VALUE}.tr(abc, xyzq)} - reemplazará todas las apariciones de "a" por "x", "b" por "y", "c" por "z" ("q" se ignora)
{{ITEM.VALUE}.tr(abcde, xyz)} - reemplazará todas las apariciones de "a" por "x", "b" por "y", "c" por "z", "d" por "z", "e" por "z" (es decir, xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")} - reemplazará todas las apariciones de barra invertida por barra, comillas simples por comillas dobles
{{ITEM.VALUE}.tr(A-Z,a-z)} - convertirá todas las letras a minúsculas
{{ITEM.VALUE}.tr(0-9a-z,*)} - reemplazará todos los números y letras minúsculas por "*"
{{ITEM.VALUE}.tr(0-9,ab)} - reemplazará todas las apariciones de 0 por "a", y reemplazará todas las apariciones de 1, 2, 3, 4, 5, 6, 7, 8 y 9 por "b"
{{ITEM.VALUE}.tr(0-9abcA-L,*)} - reemplazará todos los números, los caracteres "abc" y el rango A-L por "*"
{{ITEM.VALUE}.tr("\n","*")} - reemplazará las apariciones de fin de línea por *
{{ITEM.VALUE}.tr("e", "\n")} - reemplazará todas las "e" por fin de línea
Para incluir caracteres literales:
barra invertida - debe escaparse como \\
comilla simple - debe escaparse como \'
comilla doble - debe escaparse como \"
Secuencias de escape compatibles con barra invertida:
\\\\ => \\ - doble barra invertida a una sola barra invertida
\\a => \a - alerta
\\b => \b - retroceso
\\f => \f - salto de página
\\n => \n - nueva línea
\\r => \r - retorno
\\t => \t - tabulación horizontal
\\v => \v - tabulación vertical
Transformación de todos los caracteres del valor de la macro a mayúsculas. Funciona con conjuntos de caracteres de un solo byte (como ASCII) y no admite UTF-8. Esta función es compatible desde Zabbix 7.0.4.
Ejemplo:
{{ITEM.VALUE}.uppercase()} - transformará un valor como "Zabbix Server" en "ZABBIX SERVER" (mayúsculas)
Decodificación de un valor de macro desde la codificación URL. Esta función es compatible desde Zabbix 7.0.4.
Ejemplo:
Codifica el valor de una macro en codificación URL. Esta función es compatible desde Zabbix 7.0.4.
Ejemplo:
La siguiente tabla muestra más ejemplos de uso de funciones de macro.
Función de macro | Valor recibido | Salida |
---|---|---|
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} |
123Log line |
Problem |
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} |
123 Log line |
Problem |
{{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 (expresión regular no válida) |
{{#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)} (expresión regular no válida) |
{$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)}"} (expresión regular no válida) |
"{$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)}\"}" (expresión regular no válida) |
Los valores largos de las macros {ITEM.VALUE} y {ITEM.LASTVALUE} resueltas para elementos de texto/log se truncan a 20 caracteres en algunas ubicaciones del frontend. Para ver los valores completos de estas macros puede utilizar funciones de macro, por ejemplo:
Consulte también: detalles de las macros {ITEM.VALUE} y {ITEM.LASTVALUE} macro details.