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