As funções de macro oferecem a capacidade de personalizar valores de macro.
Às vezes, uma macro pode resolver para um valor que não é necessariamente fácil de trabalhar com. Pode ser longo ou conter uma substring específica de interesse que você gostaria de extrair. É aqui que as funções macro podem ser útil.
A sintaxe de uma função macro é:
Onde:
"
ou contém )
, ,
.Por exemplo:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(padrão, saída)}
{{#LLDMACRO}.regsub(padrão, saída)}
FUNÇÃO | ||||
---|---|---|---|---|
Descrição | Parâmetros | Suportado para | ||
fmtnum (<dígitos>) | ||||
Formatação numérica para controlar o número de dígitos impressos após o ponto decimal. | dígitos - o número de dígitos após o ponto decimal. Nenhum zero à direita será produzido. | {ITEM.VALUE} {ITEM.LASTVALUE} Macros de expressão |
||
fmttime (<format>,<time_shift>) | ||||
Formatação de hora. | format - string de formato obrigatório, compatível com a formatação da função strftime time_shift - a mudança de hora aplicada à hora antes da formatação; deve começar com -<N><time_unit> ou +<N><time_unit> , ondeN - o número de unidades de tempo para adicionar ou subtrair; *time _unit* - h (hora), d (dia), w (semana), M (mês) ou y (ano). Desde o Zabbix 5.4, o parâmetro time_shift suporta operações de tempo de várias etapas e pode incluir / <time_unit> para mudar para o início da unidade de tempo (/d - meia-noite, /w - 1º dia da semana (segunda-feira), /M - 1º dia do mês, etc.). Exemplos:-1w - exatamente 7 dias atrás;-1w/w - segunda-feira da semana anterior;-1w/w+1d - terça-feira da semana anterior.< br>Observe que as operações de tempo são calculadas da esquerda para a direita sem prioridades. Por exemplo, -1M/d+1h/w será analisado como ((-1M/d)+1h)/w . |
{TIME} | ||
iregsub (<padrão>,<saída>) | ||||
Extração de substring por uma correspondência de expressão regular (não diferencia maiúsculas de minúsculas). | pattern - a expressão regular para corresponder output - as opções de saída. \1 - \9 marcadores de posição são suportados para capturar grupos. \0 retorna o texto correspondente. |
{ITEM.VALUE} {ITEM.LASTVALUE} Macros de descoberta de baixo nível (exceto em filtro de regra de descoberta de nível de nível) |
||
regsub (<padrão>,<saída>) | ||||
Extração de substring por uma correspondência de expressão regular (diferencia maiúsculas de minúsculas). | padrão - a expressão regular para corresponder saída - as opções de saída. \1 - \9 marcadores de posição são suportados para capturar grupos. \0 retorna o texto correspondente. |
{ITEM.VALUE} {ITEM.LASTVALUE} Macros de descoberta de baixo nível (exceto em filtro de regra de descoberta de nível de nível) |
Se uma função for usada em um suportado location, mas aplicado a uma macro que não suporta funções de macro, a macro é avaliada como 'DESCONHECIDO'.
Se o padrão não for uma expressão regular correta, a macro avalia para 'UNKNOWN' (excluindo macros de descoberta de baixo nível onde a função será ignorado nesse caso e a macro permanecerá não expandida)
Se uma função de macro for aplicada à macro em locais que não suportam funções de macro, então a função é ignorada.
As maneiras pelas quais as funções de macro podem ser usadas para personalizar valores de macro é ilustrado nos seguintes exemplos de valores recebidos:
Valor recebido | Macro | Saída |
---|---|---|
24.3413523 |
{{ITEM.VALUE}.fmtnum(2)} |
24.34 |
24.3413523 |
{{ITEM.VALUE}.fmtnum(0)} |
24 |
12:36:01 |
{{TIME}.fmttime(%B)} |
Outubro |
12:36:01 |
{{TIME}.fmttime(%d %B,-1M/M)} |
1 de setembro |
123Linha de log |
{{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]+)", ID do problema: \1)} |
ID do problema: 123 |
Linha de log |
{{ITEM.VALUE}.regsub(".*", "ID do problema: \1")} |
''ID do problema: '' |
MySQL travou errno 123 |
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " ID do problema: \1_\2 ")} |
'' ID do problema: MySQL_123 '' |
123 Log line |
{{ITEM.VALUE}.regsub("([1-9]+", "ID do problema: \1")} |
*UNKNOWN* (expressão regular inválida) |
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)} (expressão regular inválida) |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} |
{$MACRO: "nome do cliente"} |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} |
{$MACRO: "1"} |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} |
{$MACRO:" {{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (expressão regular inválida) |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" |
"{$MACRO:\"nome do cliente\"}" |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" |
"{$MACRO:\"1\"}") |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}") (expressão regular inválida) |