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 host o filtros de reglas de descubrimiento de bajo nivel).
Se admite una sola función por macro; no se admite el uso de varias 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 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 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:
Formato de número para controlar la cantidad 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 resuelven a 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><unidad_tiempo>
o +<N><unidad_tiempo>
, donde:
N
- el número de unidades de tiempo a sumar o restar;unidad_tiempo
- h (hora), d (día), w (semana), M (mes) o y (año).Comentarios:
desplazamiento_tiempo
admite operaciones de tiempo en varios pasos y puede incluir /<unidad_tiempo>
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"
Decodifica un valor de 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 (sin distinguir 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); 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.
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 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]+)", 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 las subcadenas "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.
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 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 formulario
\\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.
Ejemplo:
{{ITEM.VALUE}.uppercase()} - transformará un valor como "Zabbix Server" en "ZABBIX SERVER" (mayúsculas)
Decodifica un valor de macro desde la codificación de URL.
Ejemplo:
Codifica el valor de una macro en codificación 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 resueltas {ITEM.VALUE} y {ITEM.LASTVALUE} para ítems de texto/log se truncan a 20 caracteres en algunas ubicaciones del frontend. Para ver los valores completos de estas macros puede usar funciones de macro, por ejemplo:
Consulte también: detalles de las macros {ITEM.VALUE} y {ITEM.LASTVALUE} macro details.