Sidebar

Become a monitoring expert!
Sign up for Zabbix training

3 Macros de usuário com contexto

Visão geral

Um contexto opcional pode ser usado em user macros, permitindo substituir o valor padrão com um específico do 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 em configuração de macro do usuário. Se o prefixo regex: for usado em outro lugar como contexto de macro do usuário, como em uma expressão de gatilho, será tratado como contexto estático.

A citação de contexto é opcional (veja também importante notas).

Exemplos de contexto de macro:

Exemplo Descrição
{$LOW_SPACE_LIMIT} Macro do usuário sem contexto.
{$LOW_SPACE_LIMIT:/tmp} Macro do usuário com contexto (string estática).
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} Macro de usuário com contexto (expressão regular). O mesmo que {$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 em expressões de gatilho (com base nos valores recuperados por 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 acionar protótipo para descoberta do sistema de arquivos montado:

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

Após a descoberta, diferentes limites de espaço reduzido serão aplicados em acionadores dependendo dos pontos de montagem ou tipos de sistema de arquivos descobertos. Os eventos de problema serão gerados se:

  • A pasta /home tem menos de 20% de espaço livre em disco
  • pastas que correspondem ao padrão regexp (como /etc, /tmp ou /var) têm menos de 30% do espaço livre em disco
  • pastas que não correspondem ao padrão regexp e não são /home têm menos de 10% do espaço livre em disco

Anotações importantes

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

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

  • Se uma macro com seu contexto não for encontrada no host, modelos vinculados ou globalmente, a macro sem contexto é pesquisada.
  • Somente macros de descoberta de baixo nível são suportadas no contexto. Algum outras macros são ignoradas e tratadas como texto simples.

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

  • O contexto da macro deve ser citado com " se o contexto contiver um } caractere ou começa com um caractere ". Aspas entre aspas contexto deve ser escapado com o caractere \.
  • O caractere \ em si não tem escape, o que significa que é impossível ter um contexto citado terminando com o caractere \ - a macro {$MACRO:"a:\b\c\"} é inválido.
  • Os espaços iniciais no contexto são ignorados, os espaços finais são não:
    • Por exemplo, {$MACRO:A} é igual a {$MACRO: A}, mas não {$MACRO:A }.
  • Todos os espaços antes das cotações iniciais e após as cotações finais são ignorado, mas todos os espaços entre aspas não são:
    • Macros {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } e {$MACRO: "A" } são iguais, mas as macros {$MACRO:"A"} e {$MACRO:" A "} não são.

As macros a seguir são todas equivalentes, pois possuem a mesma contexto: {$MACRO:A}, {$MACRO: A} e {$MACRO:"A"}. Isso está em contraste com chaves de item, onde 'key[a]', 'key[ a]' e 'key["a"]' são as mesmo semanticamente, mas diferente para fins de exclusividade.