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

#1 Funciones macro

Descripción general

Las funciones macro ofrecen la posibilidad de personalizar Valores de macro.

A veces una macro puede resolverse con un valor que no es necesariamente fácil de trabajar con él. Puede ser largo o contener una subcadena específica que le interesaría extraer. Aquí es donde es útil usar las funciones macro.

La sintaxis de una función macro es:

{<macro>.<func>(<parámetros>)}

dónde:

  • <macro>: la macro a personalizar (por ejemplo, {ITEM.VALUE} o {#LLDMACRO})
  • <func> - la función a aplicar
  • <parámetros>: una lista delimitada por comas de parámetros de función

Los parámetros deben entrecomillarse si:

  • comienzan con un espacio o comillas dobles
  • contienen paréntesis de cierre ")" o una coma

Por ejemplo:

{{TIME}.fmttime(formato,time_shift)}
       {{ITEM.VALUE}.regsub(patrón, salida)}
       {{#LLDMACRO}.regsub(patrón, salida)}

Funciones de macro compatibles

|FUNCIÓN|<|<|<| |-|--------------------|------------------------------------|----- ---------------| |<|Descripción|Parámetros|Compatible con| |fmtnum (<dígitos>)|<|<|<| |<|Formato de número para controlar el número de dígitos impresos después del punto decimal.|dígitos: el número de dígitos después del punto decimal. No se generarán ceros finales.|{ITEM.VALUE}
{ITEM.LASTVALUE}
Expression macros| |fmttime (<formato>,<hora_shift>)|<|<|<| |<|Formato de hora.|formato: cadena de formato obligatoria, compatible con la función de formato strftime
time_shift: el cambio de hora aplicado a la hora anterior al 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 _unidad* - h (hora), d (día), w (semana), M (mes) o y (año).
Desde Zabbix 5.4, el parámetro time_shift admite operaciones de tiempo de varios pasos y puede incluir / <time_unit> para cambiar al comienzo 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.< br>Tenga en cuenta que las operaciones de tiempo se calculan de izquierda a derecha sin prioridades. Por ejemplo, -1M/d+1h/w se analizará como ((-1M/d)+1h)/w.|{TIME}| |iregsub (<patrón>,<salida>)|<|<|<| |<|Extracción de subcadena mediante una coincidencia de expresión regular (sin distinción entre mayúsculas y minúsculas).|patrón: la expresión regular para coincidir
salida: las opciones de salida. Se admiten \1 - \9 marcadores de posición para capturar grupos. \0 devuelve el texto coincidente.|{ITEM.VALUE}
{ITEM.LASTVALUE}
Macros de descubrimiento de bajo nivel (excepto en bajo filtro de regla de descubrimiento de nivel)| |regsub (<patrón>,<salida>)|<|<|<| |<|Extracción de subcadenas mediante una coincidencia de expresión regular (se distingue entre mayúsculas y minúsculas).|patrón: la expresión regular para coincidir
salida: las opciones de salida. Se admiten \1 - \9 marcadores de posición para capturar grupos. \0 devuelve el texto coincidente.|{ITEM.VALUE}
{ITEM.LASTVALUE}
Macros de descubrimiento de bajo nivel (excepto en bajo filtro de regla de descubrimiento de nivel)|

Si una función se usa en un soportado ubicación, pero aplicado a una macro que no admite funciones de macro, entonces la macro se evalúa como 'DESCONOCIDO'.

Si el patrón no es una expresión regular correcta, la macro evalúa a 'DESCONOCIDO' (excluyendo macros de descubrimiento de bajo nivel donde la función se ignorará en ese caso y la macro permanecerá sin expandir)

Si se aplica una función de macro a la macro en ubicaciones que no admiten funciones de macro, entonces la función se ignora.

Ejemplos

Las formas en que las funciones de macro se pueden usar para personalizar los valores de macro se ilustra en los siguientes ejemplos de valores recibidos:

Valor recibido Macro Salida
24.3413523 {{ELEMENTO.VALOR}.fmtnum(2)} 24.34
24.3413523 {{ELEMENTO.VALOR}.fmtnum(0)} 24
12:36:01 {{HORA}.fmttime(%B)} Octubre
12:36:01 {{HORA}.fmttime(%d %B,-1M/M)} 1 de septiembre
123Línea de registro {{ELEMENTO.VALOR}.regsub(^[0-9]+, Problema)} Problema
123 Línea de registro {{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} Problem
123 Línea de registro {{ITEM.VALUE}.regsub("^([0-9]+)", ID del problema: \1)} ID del problema: 123
Línea de registro {{ITEM.VALUE}.regsub(".*", "ID del problema: \1")} ''ID del problema: ''
MySQL falló errno 123 {{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " ID del problema: \1_\2 ")} '' ID del problema: MySQL_123 ''
123 Línea de registro {{ITEM.VALUE}.regsub("([1-9]+", "ID del problema: \1")} *UNKNOWN* (expresión regular no válida)
nombre_cliente_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} nombre_cliente
nombre_cliente_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} 1
nombre_cliente_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} {{#IFALIAS}.regsub("(.*)_ ([0-9]+", \1)} (expresión regular no válida)
nombre_cliente_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} {$MACRO: "nombre del cliente"}
nombre_cliente_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} {$MACRO: "1"}
nombre_cliente_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} {$MACRO:" {{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (expresión regular no válida)
nombre_cliente_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" "{$MACRO:\"nombrecliente\"}"
nombre_cliente_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" "{$MACRO:\"1\"}")
nombre_cliente_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (expresión regular no válida)