Para melhorar a flexibilidade de configuração o Zabbix suporta macros de usuário que podem ser definidas em três níveis:
Estas macros tem uma sintaxe especial: {$MACRO}.
Podem ser utilizadas em:
Os seguintes caracteres podem ser utilizados em nomes de macros: A-Z , 0-9 , _ , .
O Zabbix substitui o valor das macros com a seguinte ordem de precedência:
Em outras palavras, se a macro não existir no host, o Zabbix tentará localiza-la nos templates associados ao host. Se continuar não encontrando, a buscará nas macros globais.
Se o Zabbix não encontrar o valor da macro, ele não irá substituí-la.
A definição das macros de usuário podem ocorrer em três locais:
Se uma macro de usuário for utilizada em itens ou triggers de um template é uma boa prática que ela seja adicionada no nível de template com um valor padrão. Desta forma exportando o template como um XML e importando em outro local o mesmo funcionará como o esperado.
Casos comuns de uso de macros de usuário e globais:
Usando macro em nível de host para a chave do item "Status of SSH daemon":
net.tcp.service[ssh,,{$SSH_PORT}]
Desta forma o item pode variar sua porta de um host para outro, bastando que se configure o valor da macro {$SSH_PORT} no mesmo.
Usando macro em nível de usuário para a trigger "CPU load is too high":
{ca_001:system.cpu.load[,avg1].last()}>{$MAX_CPULOAD}
Desta forma a trigger pode ser criada em um template sem precisar ser editada em cada host.
Se você precisar usar a quantidade de valores de uma função como parâmetro (por exemplo, max(#3)), inclua o caractere "#" no valor da macro, por exemplo: {$SOME_PERIOD} = #3
Usar duas macros na trigger "CPU load is too high":
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
Observe que uma macro pode ser usada como um parâmetro de uma trigger, como neste caso a função min().
Em uma expressão de trigger as macros de usuário serão expandidas para referenciar um parâmetro ou constante. Elas não serão expandidas para se referenciar ao host, chave do item, função, operador ou outro elemento da expressão.