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:
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.
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().