Esta es una traducción de la página de documentación original en español. Ayúdanos a mejorarla.

1 Funciones de macro

Las funciones de macro ofrecen la posibilidad de personalizar los valores de macros (por ejemplo, acortar o extraer subcadenas específicas), lo que facilita su uso.

Todas las funciones enumeradas aquí son compatibles con todos los tipos de macros:

Las funciones de macro se pueden utilizar 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 equipo o filtros de reglas de detección de bajo nivel).

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úmeros para controlar la cantidad de dígitos impresos después del punto decimal.
fmttime Formato de hora.
htmldecode Decodificación del valor de la macro a partir de la codificación HTML.
htmlencode Codificación del valor de la macro en codificación HTML.
iregsub Extracción de subcadenas mediante una expresión regular (sin distinguir entre mayúsculas y minúsculas).
lowercase Transformación de caracteres de valores de macro a minúsculas.
regrepl Reemplazo de carácter/subcadena en valores de macro.
regsub Extracción de subcadenas mediante una expresión regular (sin distinguir entre mayúsculas y minúsculas).
tr Transliteración de caracteres de valores de macro.
uppercase Transformación de caracteres de valores de macro a mayúsculas.
urldecode Decodificación de valores de macro a partir de la codificación de URL.
urlencode Codificación de valores de macro a codificación de URL.

Detalles de la función

La sintaxis de una macro función es:

{macro.func(parámetros)}
  • macro - la macro a personalizar, por ejemplo {ITEM.VALUE} o {#LLDMACRO};
  • func - la función a aplicar;
  • params: una lista delimitada por comas de parámetros de función, que deben citarse si:
    • empieza con un espacio o comillas dobles;
    • contiene paréntesis de cierre "``" o una coma.

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

btoa

Encoding a macro value into Base64 encoding. Base64 encoding is a method for representing binary data as text, useful for storing and secure transmission of binary content over text-based protocols.

Example:

{{ITEM.VALUE}.btoa()} - Base64-encode a value like "zabbix" into "emFiYml4"

fmtnum(dígitos)

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

Parámetros:

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

Ejemplos:

Función macro Valor recibido Salida
{{ITEM.VALUE}.fmtnum(2)} 24.3413523 24.34
{{ITEM.VALUE}.fmtnum(0)} 24.3413523 24

fmttime(formato,<hora_shift>)

Formato de hora.
Tenga en cuenta que esta función se puede utilizar con macros que se resuelven en un valor en uno de los siguientes formatos de hora:

  • hh:mm:ss
  • aaaa-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 cambio de hora aplicado a la hora antes del formateo; debe comenzar con -<N><time_unit> o +<N><time_unit>, donde:
    • N - el número de unidades de tiempo para 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 de varios pasos y puede incluir /<time_unit> para desplazarse al principio de la unidad de tiempo. (/d - medianoche, /w - 1er día de la semana (lunes), /M - 1er día del mes, etc.). Ejemplos: -1w - hace exactamente 7 días; -1w/w - lunes de la semana anterior; -1w/w+1d - Martes de la semana anterior.
  • Las operaciones horarias se calculan de izquierda a derecha sin prioridades. Por ejemplo, -1M/d+1h/w se analizará como ((-1M/d)+1h)/w.

Ejemplos:

Función macro Valor recibido Salida
{{TIME}.fmttime(%B)} 12:36:01 Octubre
{{TIME}.fmttime(%d %B,-1M/M)} 12:36:01 1 de septiembre

htmldecode

Decoding a macro value from HTML encoding.

The following characters are supported:

Value Decoded value
&amp; &
&lt; <
&gt; >
&quot; "
&#039; '
&#39; '

Example:

{{ITEM.VALUE}.htmldecode()} - HTML-decode a value like "&lt;" into "<"

htmlencode

Encoding a macro value into HTML encoding.

The following characters are supported:

Value Encoded value
& &amp;
< &lt;
> &gt;
" &quot;
' &#39;

Example:

{{ITEM.VALUE}.htmlencode()} - HTML-encode a character like "<" into "&lt;"

iregsub(patrón,salida)

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

Parámetros:

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

Comentarios:

  • Si el patrón de función es una expresión regular incorrecta, entonces la macro se evalúa como 'DESCONOCIDA' (excepto para macros de descubrimiento de bajo nivel, en cuyo caso la función se ignorará y la macro permanecerá sin resolver).

lowercase

Transformation of all macro value characters into lowercase. Works with single-byte character sets (such as ASCII) and does not support UTF-8.

Example:

{{ITEM.VALUE}.lowercase()} - transform a value like "Zabbix SERVER" into "zabbix server" (lowercase)

regrepl(pattern,replacement,<pattern2>,<replacement2>,...)

Replacement of character/substring in macro value. Note that this function is only supported with the libpcre2 library. If Zabbix server/proxy was compiled with libpcre, this function will return UNKNOWN.

Parameters:

  • pattern - the regular expression to match;
  • replacement - the replacement string.

Comments:

  • The patterns and replacements are processed sequentially, with each subsequent pair being applied in accordance with the outcome of the previous replacement;
  • This function also allows referencing captured groups in replacement strings using \1 to \9 placeholders.

Examples:

{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - replace "oldParam" with "newParam"
       {{ITEM.VALUE}.regrepl("([^a-z])","\\\1")} - escape all non-letter characters with a backslash
       {{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - replace multiple parts in item value

regsub(patrón,salida)

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

Parámetros:

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

Comentarios:

  • Si el patrón de función es una expresión regular incorrecta, entonces la macro se evalúa como 'DESCONOCIDA' (excepto para macros de descubrimiento de bajo nivel, en cuyo caso la función se ignorará y la macro permanecerá sin resolver).

Ejemplos:

Función macro Valor recibido Salida
{{ITEM.VALUE}.regsub(^[0-9]+, Problema)} 123Línea de registro Problema
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problema")} 123 Línea de registro Problema
{{ITEM.VALUE}.regsub("^([0-9]+)", ID del problema: \1)} 123 Línea de registro ID del problema: 123
{{ITEM.VALUE}.regsub(".*", "ID del problema: \1")} Línea de registro ''ID del problema: ''
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " ID del problema: \1_\2 ")} MySQL falló errno 123 '' ID del problema: MySQL_123 ''
{{ITEM.VALUE}.regsub("([1-9]+", "ID del problema: \1")} 123 Línea de registro *UNKNOWN* (expresión regular no válida)
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} nombre_cliente_1 nombre_cliente
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} nombre_cliente_1 1
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} nombre de cliente_1 {{#IFALIAS}.regsub("(.*)_ ([0-9]+", \1)} (expresión regular no válida)
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} nombre_cliente_1 {$MACRO: "nombre de cliente"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} nombre_cliente_1 {$MACRO: "1"}
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} nombre_cliente_1 {$MACRO:" {{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (expresión regular no válida)
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" nombre_cliente_1 "{$MACRO:\"nombre de cliente\"}"
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" nombre_cliente_1 "{$MACRO:\"1\"}")
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" nombre_cliente_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (expresión regular no válida)

tr(characters,replacement)

Transliteration of macro value characters.

  • characters - the set of characters to replace;
  • replacement - the set of positionally corresponding replacement characters.

Examples:

{{ITEM.VALUE}.tr(abc, xyz)} - replace all occurrences of "a" with "x", "b" with "y", "c" with "z"
       {{ITEM.VALUE}.tr(abc, xyzq)} - replace all occurrences of "a" with "x", "b" with "y", "c" with "z" ("q" is ignored)
       {{ITEM.VALUE}.tr(abcde, xyz)} - replace all occurrences of "a" with "x", "b" with "y", "c" with "z", "d" with "z", "e" with "z" (i.e. xyzzz)
       {{ITEM.VALUE}.tr("\\\'", "\/\"")} - replace all occurrences of backslash with forward slash, ' with "
       {{ITEM.VALUE}.tr(A-Z,a-z)} - convert all letters to lowercase
       {{ITEM.VALUE}.tr(0-9a-z,*)} - replace all numbers and lowercase letters with "*"
       {{ITEM.VALUE}.tr(0-9,ab)} - replace all occurrences of 0 with "a", and replace all occurrences of 1, 2, 3, 4, 5, 6, 7, 8, and 9 with "b"
       {{ITEM.VALUE}.tr(0-9abcA-L,*)} - replace all numbers, "abc" characters, and A-L range with "*"
       {{ITEM.VALUE}.tr("\n","*")} - replace end-of-line occurrences with *
       {{ITEM.VALUE}.tr("e", "\n")} - replace all "e" to end-of-line

To include literal characters:

backslash - must be escaped as \\
       single quote - must be escaped as \'
       double quote - must be escaped as \"

Supported escape sequences with backslash:

\\\\ => \\ - double backslash to single backslash
       \\a  => \a - alert
       \\b  => \b - backspace
       \\f  => \f - form feed
       \\n  => \n - newline
       \\r  => \r - return
       \\t  => \t - horizontal tab
       \\v  => \v - vertical tab

uppercase

Transformation of all macro value characters into uppercase. Works with single-byte character sets (such as ASCII) and does not support UTF-8.

Example:

{{ITEM.VALUE}.uppercase()} - transform a value like "Zabbix Server" into "ZABBIX SERVER" (uppercase)

urldecode

Decoding a macro value from URL encoding.

Example:

{{ITEM.VALUE}.urldecode()} - URL-decode a value like "%2F" into "/"

urlencode

Encoding a macro value into URL encoding.

Example:

{{ITEM.VALUE}.urlencode()} - URL-encode a character like "/" into "%2F"