1 Macros de usuário

Visão geral

Para melhorar a flexibilidade de configuração o Zabbix suporta macros de usuário que podem ser definidas em três níveis:

  • Global
  • Template
  • Host

Estas macros tem uma sintaxe especial: {$MACRO}.

Podem ser utilizadas em:

  • nomes de itens
  • parâmetros de chaves de item
  • nomes e descrições de triggers
  • constantes e parâmetros de expressões de trigger
  • vários outros locais

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:

  1. nível de host (verificado primeiro)
  2. primeiro nível de template (templates diretamente associados ao host), ordenados pelo ID de template
  3. segundo nível de template (templates associados ao template que foi diretamente associado ao host), ordenados pelo ID de template
  4. segundo nível de template (templates associados aos templates associados ao template que foi diretamente associado ao host), ordenados pelo ID de template
  5. ...
  6. macros globais (verificadas por último)

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:

  • para macros globais: Administração → Geral → Macros
  • para macros de template: Configuração → Templates abra o template desejado e olhe na aba Macros
  • para macros de hosts: Configuração → Hosts abra o host desejado e olhe na aba Macros

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:

  1. para definir itens que precisam de senhas, números de porta, nomes de arquivos, etc em nível de template e definir seus valores em nível de host
  2. para definir em nível global um valor padrão para determinada característica (como por exemplo o nome da comunidade SNMP)

Exemplos

Exemplo 1

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.

Exemplo 2

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

Exemplo 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.