As funções de macro oferecem a capacidade de personalizar os valores das macros (por exemplo, encurtar ou extrair substrings específicas), tornando-os mais fáceis de trabalhar.
A sintaxe de uma função de macro é:
onde
Por exemplo:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{$USERMACRO}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}As funções de macro são suportadas para
As funções de macro podem ser usadas em todos os locais que suportam as macros listadas. Isso se aplica, a menos que seja explicitamente declarado que apenas uma macro é esperada (por exemplo, ao configurar macros de host ou filtros de regras de descoberta de baixo nível).
É suportada uma única função por macro; múltiplas funções de macro em cadeia não são suportadas.
Veja exemplos de escape para casos em que funções de macro são usadas dentro de outros contextos (função, chave de item, outra macro, etc).
As funções são listadas sem informações adicionais. Clique na função para ver os detalhes completos.
| Função | Descrição |
|---|---|
| btoa | Codificação do valor da macro em Base64. |
| fmtnum | Formatação de número para controlar o número de dígitos impressos após o ponto decimal. |
| fmttime | Formatação de tempo. |
| htmldecode | Decodificação do valor da macro de codificação HTML. |
| htmlencode | Codificação do valor da macro em codificação HTML. |
| iregsub | Extração de substring por correspondência de expressão regular (case-insensitive). |
| lowercase | Transformação dos caracteres do valor da macro em minúsculas. |
| regrepl | Substituição de caractere/substring no valor da macro. |
| regsub | Extração de substring por correspondência de expressão regular (case-sensitive). |
| tr | Transliteração dos caracteres do valor da macro. |
| uppercase | Transformação dos caracteres do valor da macro em maiúsculas. |
| urldecode | Decodificação do valor da macro de codificação de URL. |
| urlencode | Codificação do valor da macro em codificação de URL. |
Os parâmetros opcionais da função são indicados por < >.
Codifica um valor de macro em Base64. A codificação Base64 é um método para representar dados binários como texto, útil para armazenar e transmitir com segurança conteúdo binário por protocolos baseados em texto.
Exemplo:
Formatação de número para controlar o número de dígitos impressos após o ponto decimal.
Parâmetros:
Exemplos:
{{ITEM.VALUE}.fmtnum(2)} - retornará "24.35" a partir de um valor recebido de "24.3483523"
{{ITEM.VALUE}.fmtnum(0)} - retornará "24" a partir de um valor recebido de "24.3483523"Formatação de hora.
Observe que esta função pode ser usada com macros que resultam em um valor em um dos seguintes formatos de hora:
hh:mm:ssyyyy-mm-ddThh:mm:ss[tz] (padrão ISO8601)Parâmetros:
strftime;-<N><time_unit> ou +<N><time_unit>, onde:
N - o número de unidades de tempo a adicionar ou subtrair;time_unit - h (hora), d (dia), w (semana), M (mês) ou y (ano).Comentários:
time_shift suporta operações de tempo em múltiplos passos e pode incluir /<time_unit> para deslocar 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.-1M/d+1h/w será interpretado como ((-1M/d)+1h)/w.Exemplos:
{{TIME}.fmttime(%B)} - retornará "outubro" a partir de um valor recebido de "1633098961"
{{TIME}.fmttime(%d %B,-1M/M)} - retornará "1 setembro" a partir de um valor recebido de "1633098961"Decodifica um valor de macro de uma codificação HTML.
Os seguintes caracteres são suportados:
| Valor | Valor decodificado |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Exemplo:
Codifica um valor de macro em codificação HTML.
Os seguintes caracteres são suportados:
| Valor | Valor codificado |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Exemplo:
Extração de substring por correspondência de expressão regular (case-insensitive).
Parâmetros:
Comentários:
Exemplo:
{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - será resolvido como "ERROR" se as substrings "fail", "error", "fault" ou "problem" forem recebidas (case-insensitive); retornará uma string vazia se não houver correspondênciaTransformação de todos os caracteres do valor da macro em minúsculas. Funciona com conjuntos de caracteres de byte único (como ASCII) e não suporta UTF-8.
Exemplo:
{{ITEM.VALUE}.lowercase()} - irá transformar um valor como "Zabbix SERVER" em "zabbix server" (minúsculo)Substituição de caractere/substring no valor da macro.
Parâmetros:
Comentários:
Exemplos:
{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - irá substituir "oldParam" por "newParam"
{{ITEM.VALUE}.regrepl("([^a-z])","\\\1")} - todos os caracteres que não são letras serão escapados com uma barra invertida
{$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - irá remover uma barra invertida no final (por exemplo, para substituir "C:\" por "C:")
{{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - irá substituir várias partes no valor do itemExtração de substring por correspondência de expressão regular (diferencia maiúsculas de minúsculas).
Parâmetros:
Comentários:
Exemplos:
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - será resolvido como "Problem ID: 123" se um valor como "123 Log line" for recebido
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - será resolvido como "ERROR" se substrings "fail", "error", "fault" ou "problem" forem recebidas (diferencia maiúsculas de minúsculas); retornará uma string vazia se não houver correspondênciaVeja mais exemplos.
Transliteração dos caracteres do valor da macro.
Exemplos:
{{ITEM.VALUE}.tr(abc, xyz)} - substituirá todas as ocorrências de "a" por "x", "b" por "y", "c" por "z"
{{ITEM.VALUE}.tr(abc, xyzq)} - substituirá todas as ocorrências de "a" por "x", "b" por "y", "c" por "z" ("q" é ignorado)
{{ITEM.VALUE}.tr(abcde, xyz)} - substituirá todas as ocorrências de "a" por "x", "b" por "y", "c" por "z", "d" por "z", "e" por "z" (ou seja, xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")} - substituirá todas as ocorrências de barra invertida por barra, aspas simples por aspas duplas
{{ITEM.VALUE}.tr(A-Z,a-z)} - converterá todas as letras para minúsculas
{{ITEM.VALUE}.tr(0-9a-z,*)} - substituirá todos os números e letras minúsculas por "*"
{{ITEM.VALUE}.tr(0-9,ab)} - substituirá todas as ocorrências de 0 por "a", e substituirá todas as ocorrências de 1, 2, 3, 4, 5, 6, 7, 8 e 9 por "b"
{{ITEM.VALUE}.tr(0-9abcA-L,*)} - substituirá todos os números, caracteres "abc" e o intervalo A-L por "*"
{{ITEM.VALUE}.tr("\n","*")} - substituirá as ocorrências de fim de linha por *
{{ITEM.VALUE}.tr("e", "\n")} - substituirá todos os "e" por fim de linhaPara incluir caracteres literais:
barra invertida - deve ser escapada como \\
aspas simples - deve ser escapada como \'
aspas duplas - deve ser escapada como \"Sequências de escape suportadas com barra invertida:
\\\\ => \\ - barra invertida dupla para barra invertida simples
\\a => \a - alerta
\\b => \b - backspace
\\f => \f - form feed
\\n => \n - nova linha
\\r => \r - retorno
\\t => \t - tabulação horizontal
\\v => \v - tabulação verticalTransformação de todos os caracteres do valor da macro em maiúsculas. Funciona com conjuntos de caracteres de byte único (como ASCII) e não suporta UTF-8.
Exemplo:
{{ITEM.VALUE}.uppercase()} - transformará um valor como "Zabbix Server" em "ZABBIX SERVER" (maiúsculas)Decodificando um valor de macro de uma codificação de URL.
Exemplo:
Codificando um valor de macro em codificação de URL.
Exemplo:
A tabela abaixo mostra mais exemplos de uso de funções de macro.
| Função de macro | Valor recebido | Saída |
|---|---|---|
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} |
123Log line |
Problem |
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} |
123 Log line |
Problem |
{{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} |
Log line |
Problem ID: |
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} |
MySQL crashed errno 123 |
Problem ID: MySQL\_123 |
{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} |
123 Log line |
UNKNOWN (expressão regular inválida) |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} |
customername_1 |
customername |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} |
customername_1 |
1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (expressão regular inválida) |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} |
customername_1 |
{$MACRO:"customername"} |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} |
customername_1 |
{$MACRO:"1"} |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} |
customername_1 |
{$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (expressão regular inválida) |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}" |
customername_1 |
"{$MACRO:\"customername\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}" |
customername_1 |
"{$MACRO:\"1\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" (expressão regular inválida) |
Valores longos das macros {ITEM.VALUE} e {ITEM.LASTVALUE} resolvidas para items de texto/log são truncados para 20 caracteres em alguns locais do frontend. Para ver os valores completos dessas macros, você pode usar funções de macro, por exemplo:
Veja também: detalhes das macros {ITEM.VALUE} e {ITEM.LASTVALUE} macro details.