#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 admitidas

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

|FUNCIÓN|<|<|<| |-|--------------------|--------------------|----- ---------------| |<|Descripción|Parámetros|Compatible con| |fmtnum (dígitos)|<|<|<| |<|Formato numérico 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. Rango válido: 0-20 (desde Zabbix 6.0.21). No se producirán ceros finales.|{ITEM.VALUE}
{ITEM.LASTVALUE}
Macros de expresión| |fmttime (formato,<hora_shift>)|<|<|<| |<|Formato de hora.|formato - cadena de formato obligatoria, compatible con el formato de la función strftime
time_shift - 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).
Desde Zabbix 5.4, el parámetro time_shift admite operaciones de tiempo de varios pasos y puede incluir / <time_unit> para cambiar 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:
-1s - hace exactamente 7 días;
-1s/s - lunes de la semana anterior;
-1s/s+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 subcadenas mediante una coincidencia de expresión regular (no distingue entre mayúsculas y minúsculas).|patrón - la expresión regular para coincidir
salida - las opciones de salida. \1 - \9 se admiten 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 nivel filtro de reglas de descubrimiento de nivel)| |regsub (patrón,salida)|<|<|<| |<|Extracción de subcadenas mediante una coincidencia de expresión regular (distingue entre mayúsculas y minúsculas).|patrón - la expresión regular para coincidir
salida - las opciones de salida. \1 - \9 se admiten 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 reglas de descubrimiento de nivel)|

Si una función se utiliza en un compatible ubicación, pero se aplica 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, entonces 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)

Ejemplos

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

Valor recibido Macro Salida
24.3413523 {{ITEM.VALUE}.fmtnum(2)} 24.34
24.3413523 {{ITEM.VALUE}.fmtnum(0)} 24
12:36:01 {{TIME}.fmttime(%B)} Octubre
12:36:01 {{TIME}.fmttime(%d %B,-1M/M)} 1 de septiembre
123Línea de registro {{ITEM.VALUE}.regsub(^[0-9]+, Problema)} Problema
123 Línea de registro {{ITEM.VALUE}.regsub("^([0-9]+)", "Problema")} Problema
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)
nombredecliente_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} nombre de 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 de 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:\"nombre de cliente\"}"
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)
Ver los valores completos de los elementos

Los valores largos de las macros {ITEM.VALUE} y {ITEM.LASTVALUE} resueltas para elementos de texto/registro se truncan a 20 caracteres en algunas ubicaciones de la interfaz. 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: {ITEM.VALUE} y {ITEM.LASTVALUE} detalles de la macro.