Expression Macros no Zabbix

O Zabbix já está em sua versão 6.2 (em dias, na 6.4) e notadamente, sua utilização em grandes ambientes corporativos tem crescido juntamente com a quantidade de funcionalidades trazidas por cada nova release e isso, para os mais variados setores da indústria.

Em tais ambientes, muito se busca observabilidade ao invés de simples monitoramento. A diferença? Vejamos…

 A principal diferença entre observabilidade e monitoramento é que, enquanto o monitoramento realiza a coleta de dados conforme a necessidade de nosso ambiente, a observabilidade se preocupa em permitir que esses dados se traduzam em métricas observáveis, permitindo a tomada de decisão provida de informações tão precisas quanto nossa lógica de análise.

Neste artigo, vamos explorar um pouco de uma das funcionalidades que a versão 6.0 trouxe e que nos permite aumentar o uso de observabilidade: Expression Macros.

O QUE SÃO MACROS NO ZABBIX? 

Macros são, simplificadamente, variáveis de ambiente que carregam valores reutilizáveis em várias configurações no Zabbix. Podem ser tanto built-in, quanto customizáveis, e podem até mesmo serem automaticamente configuradas de acordo com processos internos e regras de descoberta (LLD – Low-Level Discovery). 

Os principais tipos de macros são:

  • -> Macros built-in, ou de sistema, são macros geridas pela própria ferramenta e fazem correlações fixas ou dinâmicas de acordo com o contexto de uso.

  • -> Macros de Usuário, ou (User Macros), são macros criadas pelo próprio usuário, podendo ser de nível global, template ou de host, e que são utilizadas para conferir maior transparência e facilidade à configuração do monitoramento;

 

  • -> Macros de Descoberta de Baixo Nível, ou LLD Macros, são macros utilizados para referenciar objetos encontrados em descobertas realizadas pela ferramenta, permitindo mapear e reutilizar estes valores na criação de novos itens, triggers, hosts e gráficos.

  • -> Macros de Expressão, ou Expression Macros, são uma novidade no Zabbix, a partir da versão 6.0. Elas permitem um alto grau de customização e dinamização da configuração e observação de dados, como a do último valor gerado em uma coleta que acionou um alerta, a configuração de diferentes “SNMP communities”, ou até mesmo uma referência a valores coletados em outros hosts.

ONDE PODEMOS USAR EXPRESSION MACROS?

Assim como noutras features da ferramenta, as Expression Macros são suportadas em diferentes níveis, de acordo com o local de aplicação. Vale conferir a documentação. Exemplos de locais para uso de Expression Macros:

 

  • Em elementos de mapas e nomes de gráficos. São suportadas Expression Macros de baixa complexidade, ou seja, sem operações entre as funções. Também são suportadas apenas as funções do grupo avg, min, max e last nestes locais.
  • No novo campo Event Name ao configurar uma nova trigger, e em ações e comandos baseadas em triggers, são suportadas expressões complexas, como operação entre funções e trend functions, por exemplo.

 

COMO CRIAR EXPRESSION MACROS?

Entre chaves { } e antecedida pelo ?, podemos adicionar funções de cálculo que irão avaliar determinado item trazido de um host, expandir esta função e nos retornar o valor final do cálculo. Caso você tenha notado algo familiar na expressão, você acertou:  podemos utilizar as mesmas funções que, por exemplo, usamos em itens calculados.

Por exemplo, se quisermos trazer a média da coleta de um item, ou até mesmo realizar operações aritméticas:

CASO DE USO DE EXPRESSION MACROS: E-COMMERCE

Estamos habituados a monitorar a saúde de um “Apache Cluster”, a performance do seu LoadBalancer, o status de replicação entre seus bancos de dados, ou até mesmo os dados performáticos das instâncias que sustentam toda esta solução (o e-commerce). Estes são dados puramente operacionais e portanto, podemos/devemos focar no negócio. Se o usuário não acessar o site, ele não compra.

Um Network Map no Zabbix pode nos ajudar a verificar a performance do E-Commerce para além dos dados operacionais mencionados antes. Com um Web Scenario simples, temos os seguintes itens e suas respectivas métricas:

  1. Download Speed for scenario: valor em bps
  2. Download speed for step: valor em bps
  3. Failed step of scenario: nº do passo que falhou
  4. Last error message of scenario: mensagem de erro que resultou na falha da coleta;
  5. Response code for step: código de resposta da página;
  6. Response time for step: valor em segundos

 

A partir de tais itens, podemos incrementar a construção do nosso Network Map com a utilização das Expression Macros:

Acima, o último valor do tempo de resposta feito no Web Scenario (o mesmo valo exibido em “Latest data”).

Acima, a média dos tempos de resposta obtidos na última hora, até agora.

Acima, o maior (portanto, o pior) tempo de resposta obtido na última hora no teste do Web Scenario.

EXPRESSION MACROS PARA LABELS AVANÇADOS EM NETWORK MAP

Note que, para mapas e gráficos, as únicas funções suportadas são o grupo avg, min, max e last.

Como resultado inicial, teremos:

*caso a expressão esteja errada, a macro não será resolvida na visualização do mapa

Agora, vejamos como um Dashboard poderia ser composto com tais dados/informações:

Note que o nome dos gráficos traz o último valor coletado, para referência rápida (Novamente, usamos Expression Macros):

Nota:

Pode-se também integrar esta solução com a função Scheduled Reports para maximizar a utilização do Zabbix como ferramenta de observação de ambientes.

TRABALHANDO TRIGGERS

Pensando em uma trigger comum, poderíamos ter:

Que resulta em:

Com esta avaliação simples e utilização de macros já conhecidas, conseguimos extrair informações diretamente no nome do problema. Para uma visualização mais assertiva, podemos fornecer mais dados através de Expression Macros.

EXPLORANDO CALCULATED ITEMS E TREND FUNCTIONS PARA OBSERVABILIDADE

O comparativo dentre a média da última hora e a média do dia anterior pode ser crucial para auxiliar na análise de um problema, e permite um olhar histórico da situação.

Quando trabalhamos com Expression Macros, podemos utilizar o campo de Formula na configuração de um novo item calculado para observarmos a sintaxe de uma expressão, o que nos permite também utilizar o botão Test para visualizar a resolução da expressão como um todo.

Para extrair a variação, em %:

Desta maneira, a avaliação se tratará da relação entre a média da última hora e da média das 24h do dia anterior, usando a função trendavg que realizará o cálculo com base nas trends já coletadas. O resultado será a variação nominal em %.

APLICANDO OBSERVABILIDADE COM EVENT NAME:

Para utilizar uma função complexa, deveremos usar o campo Event name:

Analisando a Expression Macro:

*a chave do item foi substituída pela macro {ITEM.KEY} para fins didáticos. Entenda que a chave deve entrar integralmente na expressão final

Utilizou-se também a macro function fmtnum, que é compatível com Expression Macros e permite a limitação da quantidade de casas decimais. É uma forma de lidar com dízimas, controlando a quantidade de número após a vírgula. O resultado final será limpo e assertivo:

 Nota-se o resultado negativo, que significa que a média de 1 hora hoje é menor que a do dia de ontem, junto com a variação nominal.

EXPRESSION MACROS EM NOTIFICAÇÕES

O administrador pode se valer também de notificações customizadas em ações baseadas em triggers para trazer panoramas completos via mensageria:

* note que em Actions podemos utilizar expressões complexas tanto em notificações quanto em comandos

Desta maneira, temos acessos a várias informações pertinentes à análise de causa raíz do problema em uma única notificação.

CONCLUSÃO

 

A celeridade necessária nas tomadas de decisão é uma tendência atual e tende apenas a se intensificar nos próximos anos. Como ferramenta de monitoramento, o Zabbix traz diversas soluções para manipulação e observabilidade de dados.

            Com as Expression Macros, o acesso transparente aos dados coletados se torna possível em vários cases, removendo a necessidade de acesso e análise pontual de dados para permitir uma visão mais ampla da saúde de nosso ambiente. Cabe ao administrador mensurar quais serão os métodos mais eficazes a serem adotados em seu ciclo de processos.

            Deixe nos comentários como você gostaria de usar Expression Macros!

Lucas Deolindo

Lucas Deolindo

COPs e Instrutor da Unirede

Assine a nossa Newsletter!

Quer saber de próximos treinamentos, notícias, publicações, webinars e também sobre eventos da Unirede? Assine a nossa Newsletter e fique por dentro de todas as novidades.

Você pode gostar também…

Integração da API do Zabbix com o Telegram

Integração da API do Zabbix com o Telegram

Introdução A API do Zabbix é extremamente versátil, e aliada às diversas funções dessa excelente ferramenta de monitoramento, podemos tornar seu uso ainda mais versátil.  Ao longo deste artigo, pretendo mostrar a utilização de dois Bots desenvolvidos na linguagem...

Zabbix como ferramenta de apoio na descoberta de vulnerabilidades

Zabbix como ferramenta de apoio na descoberta de vulnerabilidades

çãA utilização da ferramenta opensource Zabbix no dia-a-dia de profissionais de TI é fundamental para garantir a estabilidade de ambientes, obtendo dados de sinais vitais e outras opções. Dentre essas outras opções, conforme necessidade e contexto, é possível...

Dicas para usar o Geomaps Widget do Zabbix 6.0

Dicas para usar o Geomaps Widget do Zabbix 6.0

A versão 6.0 do Zabbix conta com um widget para geolocalização dos hosts, exibindo-os em um Dashboard, conforme filtros que podemos aplicar. Acontece que, apesar de parecer simples (e é!), versões anteriores precisavam de integrações e alterações em código para...

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *