Macros de usuário
Visão geral
As macros de usuário são compatíveis com o Zabbix para oferecer maior flexibilidade, além das macros compatíveis por padrão.
As macros de usuário podem ser definidas no nível global, de template e de host. Essas macros têm uma sintaxe especial:
{$MACRO}
O Zabbix resolve as macros de acordo com a seguinte precedência:
- Macros no nível do host (verificadas primeiro).
- Macros definidas para os templates de primeiro nível do host (ou seja, templates vinculados diretamente ao host), ordenadas pelo ID do template.
- Macros definidas para os templates de segundo nível do host, ordenadas pelo ID do template.
- Macros definidas para os templates de terceiro nível do host, ordenadas pelo ID do template, e assim por diante.
- Macros globais (verificadas por último).
Em outras palavras, se uma macro não existir para um host, o Zabbix tentará encontrá-la nos templates do host, em ordem crescente de profundidade. Se ainda assim não for encontrada, uma macro global será usada, se existir.
Se uma macro com o mesmo nome existir em vários templates vinculados no mesmo nível, será usada a macro do template com o menor ID. Portanto, ter macros com o mesmo nome em vários templates representa um risco de configuração.
Se o Zabbix não conseguir encontrar uma macro, ela não será resolvida.
As macros (incluindo macros de usuário) permanecem não resolvidas na seção Configuration (por exemplo, na lista de triggers) por design, para tornar configurações complexas mais transparentes.
As macros de usuário podem ser usadas em:
- nome do item
- parâmetro da chave do item
- intervalos de atualização do item e intervalos flexíveis
- nome e descrição do trigger
- parâmetros e constantes da expressão do trigger (consulte os exemplos)
- muitos outros locais - consulte a lista completa
Casos de uso comuns de macros globais e de host
- use uma macro global em vários locais; depois altere o valor da macro e aplique as alterações de configuração a todos os locais com um clique
- aproveite os templates com atributos específicos do host: senhas, números de porta, nomes de arquivos, expressões regulares, etc.
Recomenda-se usar macros de host em vez de macros globais, porque adicionar, atualizar ou excluir macros globais força uma atualização incremental da configuração para todos os hosts. Para mais informações, consulte Passive and active agent checks.
Configuração
Para definir macros de usuário, vá para o local correspondente no frontend:
- Para macros globais, acesse Administration > Macros.
- Para macros no nível de host e template, abra as propriedades do host ou template e procure a aba Macros.
Uma macro de usuário tem os seguintes atributos:

| Parameter | Description |
|---|---|
| Macro | Nome da macro. O nome deve estar entre chaves e começar com um cifrão. Exemplo: {$FRONTEND_URL}. Os seguintes caracteres são permitidos nos nomes de macro: A-Z (somente maiúsculas) , 0-9 , _ , . |
| Value | Valor da macro. Há suporte para três tipos de valor: Text (padrão) - valor em texto simples Secret text - o valor é mascarado com asteriscos Vault secret - o valor contém um caminho/consulta para um vault secret. Para alterar o tipo de valor, clique no botão no final do campo de entrada do valor. O comprimento máximo de um valor de macro de usuário é de 2048 caracteres. |
| Description | Campo de texto usado para fornecer mais informações sobre esta macro. |
Ao configurar macros de usuário, observe os seguintes comportamentos específicos de contexto:
- se macros de usuário forem usadas em itens ou triggers de template, considere adicionar essas macros ao template também (mesmo que elas estejam definidas globalmente); dessa forma, macros do tipo Text funcionarão como esperado após exportar o template para XML e importá-lo em outro sistema (os valores de macros secretas não são exportados)
- se macros de usuário forem usadas em expressões de trigger, essas macros só serão resolvidas se fizerem referência a um parâmetro ou constante; elas NÃO serão resolvidas se fizerem referência a um host, chave de item, função, operador ou outra expressão de trigger (macros secretas não podem ser usadas em expressões de trigger)
- se macros de usuário forem usadas em um host que tenha uma regra de descoberta em baixo nível com protótipos de host, os hosts descobertos herdarão todas as macros de usuário definidas nesse host
Exemplos
Exemplo 1
Uso de macro no nível do host na chave do item "Status do daemon SSH":
net.tcp.service[ssh,,{$SSH_PORT}]
Este item pode ser atribuído a vários hosts, desde que o valor de {$SSH_PORT} esteja definido nesses hosts.
Exemplo 2
Uso de macro no nível do host no trigger "A carga da CPU está muito alta":
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
Esse trigger seria criado no template, não editado em hosts individuais.
Se quiser usar a quantidade de valores como parâmetro da função (por exemplo, max(/host/key,#3)), inclua o símbolo de hash na definição da macro desta forma: SOME_PERIOD => #3.
Exemplo 3
Uso de duas macros no trigger "A carga da CPU está muito alta":
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
Observe que uma macro pode ser usada como parâmetro de uma função de trigger; neste exemplo, a função min().
Exemplo 4
Sincronize a condição de indisponibilidade do agent com o intervalo de atualização do item:
- defina a macro
{$INTERVAL}e use-a no intervalo de atualização do item; - use
{$INTERVAL}como parâmetro do trigger de indisponibilidade do agent:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
Exemplo 5
Centralize a configuração do horário de trabalho:
- crie uma macro global
{$WORKING_HOURS}igual a1-5,09:00-18:00; - use-a no campo Horário de trabalho em Administração > Geral > Interface gráfica;
- use-a no campo Quando ativo em Usuários > Usuários, na aba Mídia de um usuário;
- use-a para configurar uma coleta mais frequente de itens durante o horário de trabalho:

- use-a na condição de ação Período de tempo;
- ajuste o horário de trabalho em Administração > Macros, se necessário.
Exemplo 6
Use uma macro de protótipo de host para configurar itens para hosts descobertos:
- Em um protótipo de host, defina a macro de usuário
{$SNMPVALUE}com a macro de descoberta de baixo nível{#SNMPVALUE}como valor:

- Atribua o template Generic SNMPv2 ao protótipo de host.
- Use
{$SNMPVALUE}no campo SNMP OID dos itens do template Generic SNMPv2.
Contexto de macro de usuário
Consulte macros de usuário com contexto.