Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

3 Macros de usuário com contexto

Visão geral

Um contexto opcional pode ser usado em macros de usuário, permitindo substituir o valor padrão por um valor específico de contexto.

O contexto é anexado ao nome da macro; a sintaxe depende se o contexto é um valor de texto estático:

{$MACRO:"texto estático"}

ou uma expressão regular:

{$MACRO:regex:"expressão regular"} 

Observe que uma macro com contexto de expressão regular só pode ser definida na configuração de macro de usuário. Se o prefixo regex: for usado em outro lugar como contexto de macro de usuário, como em uma expressão de trigger, ele será tratado como contexto estático.

A citação do contexto é opcional (veja também notas importantes).

Exemplos de contexto de macro:

Exemplo Descrição
{$LOW_SPACE_LIMIT} Macro de usuário sem contexto.
{$LOW_SPACE_LIMIT:/tmp} Macro de usuário com contexto (string estática).
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} Macro de usuário com contexto (expressão regular). Igual a {$LOW_SPACE_LIMIT:/tmp}.
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} Macro de usuário com contexto (expressão regular). Corresponde a todas as strings prefixadas com /var/log/.

Casos de uso

Macros de usuário com contexto podem ser definidas para realizar limites de trigger mais flexíveis em expressões de trigger (com base nos valores recuperados pela descoberta de baixo nível). Por exemplo, você pode definir as seguintes macros:

  • {$LOW_SPACE_LIMIT} = 10
  • {$LOW_SPACE_LIMIT:/home} = 20
  • {$LOW_SPACE_LIMIT:regex:"^/[a-z]+$"} = 30

Então, uma macro de descoberta de baixo nível pode ser usada como contexto de macro em um protótipo de trigger para descoberta de sistemas de arquivos montados:

last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

Após a descoberta, diferentes limites de espaço livre serão aplicados nas triggers dependendo dos pontos de montagem ou tipos de sistema de arquivos descobertos. Eventos de problema serão gerados se:

  • a pasta /home tiver menos de 20% de espaço livre em disco
  • pastas que correspondam ao padrão regexp (como /etc, /tmp ou /var) tiverem menos de 30% de espaço livre em disco
  • pastas que não correspondam ao padrão regexp e não sejam /home tiverem menos de 10% de espaço livre em disco

Notas importantes

  • Se mais de uma macro de usuário com contexto existir, o Zabbix tentará corresponder primeiro as macros de contexto simples e depois as macros de contexto com expressões regulares em uma ordem indefinida.

Não crie macros de contexto diferentes que correspondam à mesma string para evitar comportamento indefinido.

  • Se uma macro com seu contexto não for encontrada no host, templates vinculados ou globalmente, então a macro sem contexto será pesquisada.
  • Apenas macros de descoberta de baixo nível são suportadas no contexto. Qualquer outra macro é ignorada e tratada como texto simples.

Tecnicamente, o contexto da macro é especificado usando regras semelhantes aos parâmetros da chave do item, exceto que o contexto da macro não é analisado como vários parâmetros se houver um caractere ,:

  • O contexto da macro deve ser colocado entre aspas com " se o contexto contiver um caractere } ou começar com um caractere ". Aspas dentro do contexto entre aspas devem ser escapadas com o caractere \.
  • O próprio caractere \ não é escapado, o que significa que não é possível ter um contexto entre aspas terminando com o caractere \ - a macro {$MACRO:"a:\b\c\"} é inválida.
  • Os espaços à esquerda no contexto são ignorados, os espaços à direita não:
    • Por exemplo, {$MACRO:A} é o mesmo que {$MACRO: A}, mas não {$MACRO:A }.
  • Todos os espaços antes das aspas iniciais e após as aspas finais são ignorados, mas todos os espaços dentro das aspas não são:
    • As macros {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } e {$MACRO: "A" } são as mesmas, mas as macros {$MACRO:"A"} e {$MACRO:" A "} não são.

As seguintes macros são todas equivalentes, porque têm o mesmo contexto: {$MACRO:A}, {$MACRO: A} e {$MACRO:"A"}. Isso contrasta com as chaves de item, onde 'key[a]', 'key[ a]' e 'key["a"]' são semanticamente iguais, mas diferentes para fins de exclusividade.