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 declarado explicitamente que apenas uma macro é esperada (por exemplo, ao configurar macros de host ou filtros de regras de descoberta de baixo nível).
Veja também: problemas conhecidos.
É suportada apenas uma função por macro; múltiplas funções de macro em cadeia não são suportadas.
Consulte 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 no formato 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 da codificação HTML. |
| htmlencode | Codificação do valor da macro na 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 da codificação de URL. |
| urlencode | Codificação do valor da macro na codificação de URL. |
Os parâmetros opcionais da função são indicados por < >.
Codificando um valor de macro em codificação 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 meio de protocolos baseados em texto.
Exemplo:
Esta função é suportada desde o Zabbix 7.0.4.
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á "October" de um valor recebido de "1633098961"
{{TIME}.fmttime(%d %B,-1M/M)} - retornará "1 September" de um valor recebido de "1633098961"Decodificando um valor de macro de codificação HTML. Esta função é suportada desde o Zabbix 7.0.4.
Os seguintes caracteres são suportados:
| Valor | Valor decodificado |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Exemplo:
Codifica o valor de uma macro em codificação HTML. Esta função é suportada a partir do Zabbix 7.0.4.
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 para "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. Esta função é suportada desde o Zabbix 7.0.4.
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. Observe que esta função só é suportada com a biblioteca libpcre2. Se o Zabbix server/proxy foi compilado com libpcre, esta função retornará UNKNOWN. Esta função é suportada a partir do Zabbix 7.0.4.
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 de caracteres do valor da macro. Esta função é suportada desde o Zabbix 7.0.4.
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. Esta função é suportada desde o Zabbix 7.0.4.
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. Esta função é suportada desde o Zabbix 7.0.4.
Exemplo:
Codifica um valor de macro em codificação de URL. Esta função é suportada desde o Zabbix 7.0.4.
Exemplo:
A tabela abaixo mostra mais exemplos de uso de funções de macro.
{#IFALIAS} é uma macro LLD e só é definida em contextos de descoberta de baixo nível (regras de descoberta, protótipos e os items/triggers criados a partir deles). Usá-la fora do LLD deixará o token não expandido.
| 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:"{{#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:\"{{#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.