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

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:

{{ITEM.VALUE}.btoa()} - Codificación en Base64 de un valor como "zabbix" en "emFiYml4"

Esta función es compatible desde Zabbix 7.0.4.

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

Decodificación de un valor de macro a partir de la codificación HTML. Esta función es compatible desde Zabbix 7.0.4.

Se admiten los siguientes caracteres:

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

Ejemplo:

{{ITEM.VALUE}.htmldecode()} - Decodificación HTML de un valor como "<" en "<"

htmlencode

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:

{{ITEM.VALUE}.htmlencode()} - Codifica en HTML un carácter como "<" en "<"

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

Transformación de todos los caracteres de valores de 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()} - transforma un valor como "Zabbix SERVER" en "zabbix server" (en minúsculas)

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

Reemplazo de carácter/subcadena en valor de macro. Esta función es compatible desde Zabbix 7.0.4.

Parámetros:

  • pattern - la expresión regular que se buscará;
  • replacement - la cadena de reemplazo.

Comentarios:

  • Los patrones y reemplazos se procesan secuencialmente, y cada par posterior se aplica de acuerdo con el resultado del reemplazo anterior;
  • Esta función también permite hacer referencia a grupos capturados en cadenas de reemplazo utilizando marcadores de posición \1 a \9.

Ejemplos:

{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - reemplaza "oldParam" por "newParam" {{ITEM.VALUE}.regrepl("([^a-z])","\\1")} - omite todos los caracteres que no sean letras con una barra invertida {{ITEM.VALUE}.regrepl("_v1.0", "_v2.0", "(final)", "")} - reemplaza varias partes en el valor del elemento

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(caracteres,reemplazo)

Transliteración de caracteres de valores de macro. Esta función es compatible desde Zabbix 7.0.4.

  • caracteres: el conjunto de caracteres que se reemplazarán;
  • reemplazo: el conjunto de caracteres de reemplazo que corresponden a la posición.

Ejemplos:

{{ITEM.VALUE}.tr(abc, xyz)} - reemplaza todas las ocurrencias de a por x, b por y, c por z
       {{ITEM.VALUE}.tr(abc, xyzq)} - reemplaza todas las ocurrencias de a por x, b por y, c por z (q se ignora)
       {{ITEM.VALUE}.tr(abcde, xyz)} - reemplaza todas las ocurrencias de a por x, b por y, c por z, d por z, e por z (es decir, xyzzz)
       {{ITEM.VALUE}.tr("\\\'", "\/\"")} - reemplaza todas las ocurrencias de barra invertida por barra diagonal, ' por "
       {{ITEM.VALUE}.tr(A-Z,a-z)} - convierte todas las letras a minúsculas
       {{ITEM.VALUE}.tr(0-9a-z,*)} - reemplaza todos los números y letras minúsculas por "*"
       {{ITEM.VALUE}.tr(0-9,ab)} - reemplaza todas las ocurrencias de 0 con a, y reemplaza todas las ocurrencias de 1, 2, 3, 4, 5, 6, 7, 8 y 9 con b
       {{ITEM.VALUE}.tr(0-9abcA-L,*)} - reemplaza todos los números, caracteres abc y el rango A-L con "*"
       {{ITEM.VALUE}.tr("\n","*")} - reemplaza las ocurrencias de fin de línea con *
       {{ITEM.VALUE}.tr("e", "\n")} - reemplaza todas las "e" al final 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 admitidas con barra invertida:

\\\\ => \\ - barra invertida doble a barra invertida simple
       \\a => \a - alerta
       \\b => \b - retroceso
       \\f => \f - avance de página
       \\n => \n - nueva línea
       \\r => \r - retorno
       \\t => \t - tabulación horizontal
       \\v => \v - tabulación vertical

uppercase

Transformación de todos los caracteres de valores de 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()} - transforma un valor como "Zabbix Server" en "ZABBIX SERVER" (en mayúsculas)

urldecode

Decodificación de un valor de macro a partir de la codificación de URL. Esta función es compatible desde Zabbix 7.0.4.

Ejemplo:

{{ITEM.VALUE}.urldecode()} - Decodificación de URL de un valor como "%2F" en "/"

urlencode

Codificación de un valor de macro en codificación URL. Esta función es compatible desde Zabbix 7.0.4.

Ejemplo:

{{ITEM.VALUE}.urlencode()} - Codificación URL de un carácter como "/" en "%2F"