1 Funciones de macro

Descripción general

Las funciones macro ofrecen la posibilidad de personalizar los valores de macro.

A veces una macro puede resolverse con un valor que no es necesariamente fácil de calcular. Puede ser largo o contener una subcadena específica de interés que le gustaría extraer. Aquí es donde se pueden utilizar 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
  • <params>: una lista delimitada por comas de parámetros de función. Los parámetros deben citarse si comienzan con '' '' (espacio), " o contener ), ,.

Por ejemplo:

{{TIME}.fmttime(format,time_shift)}
       {{ITEM.VALUE}.regsub(pattern, output)}
       {{#LLDMACRO}.regsub(pattern, output)}

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.4.6). 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 nivel filtro de reglas de descubrimiento de nivel)

Si una función se utiliza en una ubicación compatible, 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 de macro para personalizar los valores de macro se ilustran en los siguientes ejemplos de 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)} October
12:36:01 {{TIME}.fmttime(%d %B,-1M/M)} 1 September
123Log line {{ITEM.VALUE}.regsub(^[0-9]+, Problem)} Problem
123 Log line {{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} Problem
123 Log line {{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} Problem ID: 123
Log line {{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} ''Problem ID: ''
MySQL crashed errno 123 {{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} '' Problem ID: MySQL_123 ''
123 Log line {{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} *UNKNOWN* (invalid regular expression)
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} customername
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} 1
customername_1 {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} {{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (invalid regular expression)
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} {$MACRO:"customername"}
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} {$MACRO:"1"}
customername_1 {$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} {$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (invalid regular expression)
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" "{$MACRO:\"customername\"}"
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" "{$MACRO:\"1\"}")
customername_1 "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" "{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (invalid regular expression)
Ver valores completos de los elementos

Los valores largos de las macros {ITEM.VALUE} y {ITEM.LASTVALUE} resueltas para métricas de texto se truncan a 20 caracteres en algunas ubicaciones de la interfaz de usuario. Para ver los valores completos de estas macros, puede utilizar funciones macro, por ejemplo:

{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1) }

Ver también: {ITEM.VALUE} y {ITEM.LASTVALUE} en detalles de macro.