Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

1 Funções macro

Visão geral

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 é:

{<macro>.<func>(<params>)}

Onde:

  • <macro> - a macro para personalizar (por exemplo {ITEM.VALUE} ou {#LLDMACRO})
  • <func> - a função a ser aplicada
  • <params> - uma lista delimitada por vírgulas de parâmetros de função. Os parâmetros devem ser citados se começarem com '' '' (espaço), " ou contém ), ,.

Por exemplo:

{{TIME}.fmttime(format,time_shift)}
       {{ITEM.VALUE}.regsub(padrão, saída)}
       {{#LLDMACRO}.regsub(padrão, saída)}

Funções de macro suportadas

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>, onde
N - 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.

Exemplos

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)