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 listadas. Esto se aplica a menos que se indique explícitamente que solo se espera una macro (por ejemplo, al configurar macros de equipo o filtros de reglas de bajo nivel de descubrimiento).
Se admite una sola función por macro; no se admiten múltiples funciones de macro en cadena.
Consulte los ejemplos de escape para los casos en que se utilicen funciones de macro dentro de otros contextos (función, clave de métrica, 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 codificación Base64. |
fmtnum | Formato de número para controlar el número de dígitos impresos después del punto decimal. |
fmttime | Formato de tiempo. |
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 < >.
Codifica un valor de macro en 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:
Formato numérico 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 hora.
Tenga en cuenta que esta función puede utilizarse con macros que se resuelven a un valor en uno de los siguientes formatos de hora:
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 interpretará como ((-1M/d)+1h)/w
.Ejemplos:
{{TIME}.fmttime(%B)} - devolverá "octubre" a partir de un valor recibido de "12:36:01"
{{TIME}.fmttime(%d %B,-1M/M)} - devolverá "1 septiembre" a partir de un valor recibido de "12:36:01"
Decodifica el valor de una macro desde la codificación HTML.
Se admiten los siguientes caracteres:
Valor | Valor decodificado |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Ejemplo:
Codifica un valor de macro en codificación HTML.
Se admiten los siguientes caracteres:
Valor | Valor codificado |
---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Ejemplo:
Extracción de subcadenas mediante coincidencia de expresión regular (no distingue mayúsculas/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/minúsculas); no devuelve nada 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 soporta UTF-8.
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.
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 de la métrica
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]+)", ID de problema: \1)} - se resolverá como "ID de problema: 123" si se recibe un valor como "123 Línea de registro"
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - se resolverá como "ERROR" si se reciben subcadenas "fail", "error", "fault" o "problem" (sensible a mayúsculas y minúsculas); nada si no hay coincidencia
Vea más ejemplos.
Transliteración de los caracteres del valor de la macro.
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 soportadas 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 soporta UTF-8.
Ejemplo:
{{ITEM.VALUE}.uppercase()} - transformará un valor como "Zabbix Server" en "ZABBIX SERVER" (mayúsculas)
Decodifica el valor de una macro desde la codificación de URL.
Ejemplo:
Codifica el valor de una macro en formato URL.
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 métricas 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.