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.