Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

1 Funciones de macro

Descripción general

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:

{macro.func(params)}

donde

  • macro: la macro a personalizar;
  • func: la función a aplicar (ver funciones soportadas);
  • params: una lista de parámetros de función separados por comas, que deben estar entre comillas dobles si:
    • comienzan con un espacio o comillas dobles;
    • contienen paréntesis de cierre o una coma.

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

Funciones soportadas

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.

Detalles de la función

Los parámetros opcionales de la función se indican mediante < >.

btoa

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:

{{ITEM.VALUE}.btoa()} - codificará en Base64 un valor como "zabbix" en "emFiYml4"
fmtnum(digits)

Formato numérico para controlar el número de dígitos impresos después del punto decimal.

Parámetros:

  • digits - el número de dígitos después del punto decimal. Rango válido: 0-20. No se producirán ceros finales.

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"
fmttime(format,<time_shift>)

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)
  • Marca de tiempo UNIX

Parámetros:

  • format - cadena de formato obligatoria, compatible con el formato de la función strftime;
  • time_shift (opcional) - el desplazamiento de tiempo aplicado antes de formatear; debe comenzar con -<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:

  • El parámetro 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.
  • Las operaciones de tiempo se calculan de izquierda a derecha sin prioridades. Por ejemplo, -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"
htmldecode

Decodifica el valor de una macro desde la codificación HTML.

Se admiten los siguientes caracteres:

Valor Valor decodificado
& &
< <
> >
" "
' '
' '

Ejemplo:

{{ITEM.VALUE}.htmldecode()} - decodificará un valor HTML como "<" en "<"
htmlencode

Codifica un valor de macro en codificación HTML.

Se admiten los siguientes caracteres:

Valor Valor codificado
& &
< <
> >
" "
' '

Ejemplo:

{{ITEM.VALUE}.htmlencode()} - codificará en HTML un carácter como "<" en "<"
iregsub(pattern,output)

Extracción de subcadenas mediante coincidencia de expresión regular (no distingue mayúsculas/minúsculas).

Parámetros:

  • pattern - la expresión regular a buscar;
  • output - las opciones de salida. Se admiten los marcadores de posición \1 - \9 para capturar grupos. \0 devuelve el texto coincidente.

Comentarios:

  • Si no hay coincidencia para la expresión regular, la función no devuelve nada;
  • Si el patrón de la función es una expresión regular incorrecta, entonces la macro se evalúa como 'UNKNOWN' (excepto para macros de descubrimiento de bajo nivel, en cuyo caso la función será ignorada y la macro permanecerá sin resolver);
  • Las referencias a grupos de captura inexistentes en la cadena de reemplazo se sustituyen por una cadena vacía.

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
minúsculas

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)
regrepl(pattern,replacement,<pattern2>,<replacement2>,...)

Reemplazo de carácter/subcadena en el valor de la macro.

Parámetros:

  • pattern - la expresión regular a buscar;
  • replacement - la cadena de reemplazo. Se admiten los marcadores de posición \1 - \9 en las cadenas de reemplazo para capturar grupos.

Comentarios:

  • Los patrones y reemplazos se procesan secuencialmente, aplicándose cada par subsiguiente de acuerdo con el resultado del reemplazo anterior;
  • Las referencias a grupos de captura inexistentes en la cadena de reemplazo se sustituyen por una cadena vacía.

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
regsub(patrón,salida)

Extracción de subcadenas mediante una coincidencia de expresión regular (sensible a mayúsculas y minúsculas).

Parámetros:

  • patrón: la expresión regular a coincidir;
  • salida: las opciones de salida. Se admiten los marcadores de posición \1 - \9 para capturar grupos. \0 devuelve el texto coincidente.

Comentarios:

  • Si no hay coincidencia para la expresión regular, la función no devuelve nada;
  • Si el patrón de la función es una expresión regular incorrecta, entonces la macro se evalúa como 'UNKNOWN' (excepto para macros de descubrimiento de bajo nivel, en cuyo caso la función será ignorada y la macro permanecerá sin resolver);
  • Las referencias a grupos de captura inexistentes en la cadena de reemplazo se reemplazan por una cadena vacía.

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.

tr(caracteres,reemplazo)

Transliteración de los caracteres del valor de la macro.

  • caracteres: el conjunto de caracteres a reemplazar;
  • reemplazo: el conjunto de caracteres de reemplazo correspondientes por posición.

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
mayúsculas

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)
urldecode

Decodifica el valor de una macro desde la codificación de URL.

Ejemplo:

{{ITEM.VALUE}.urldecode()} - decodificará un valor como "%2F" en "/"
urlencode

Codifica el valor de una macro en formato URL.

Ejemplo:

{{ITEM.VALUE}.urlencode()} - codificará un carácter como "/" en "%2F"

Ejemplos adicionales

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)
Ver valores completos de métricas

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:

{{ITEM.VALUE}.regsub("(.*)", \1)}
       {{ITEM.LASTVALUE}.regsub("(.*)", \1)}

Consulte también: detalles de las macros {ITEM.VALUE} y {ITEM.LASTVALUE} macro details.