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:
dónde:
"
o contener )
, ,
.Por ejemplo:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}
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> , dondeN - 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)
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) |
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.