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:
- Download Speed for scenario: valor em bps
- Download speed for step: valor em bps
- Failed step of scenario: nº do passo que falhou
- Last error message of scenario: mensagem de erro que resultou na falha da coleta;
- Response code for step: código de resposta da página;
- 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
COPs e Instrutor da Unirede