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) |