Novo fôlego para o monitoramento MySQL via ODBC

Desde que o Zabbix incorporou o suporte nativo a monitoração de banco de dados (realizada via ODBC), vejo muita gente torcendo o nariz para o uso desse tipo de monitoração.

Antes mesmo da Zabbix SIA disponibilizar esse tipo de monitoração, muitos SysAdmins já usavam soluções como o falecido DBforBix, PyODBC e até mesmos scripts personalizados para efetuar monitoramento de bases de dados.

Fato é que o monitoramento ODBC nativo do Zabbix veio para facilitar a implementação para esse tipo de monitoramento. Porém, nem tudo são flores. Administrar as configurações de bases de dados nos arquivos odbc.ini e tnsnames.ora, por exemplo, não é tarefa fácil quando você monitora muitas instâncias de banco de dados. Para ajudar essa administração, desenvolvi o Zabbix2ODBC na empresa em que trabalho e o projeto virou open source. Este projeto está disponível desde 2019 no GitHub. Em uma postagem futura vou mostrar como usar a imagem Docker desse projeto.

Além da dificuldade em administrar os arquivos de configuração, ainda existe o problema principal do monitoramento ODBC, que é a performance. Raramente você vai notar perda de performance monitorando poucas bases de dados. Passando de 100 bases de dados com uma média de 50 itens coletados num intervalo médio de 3 minutos (usando um proxy com 4 CPUs e 8 GB de RAM), você já começa a sentir atraso na coleta dos dados. Isso acontece porque o monitoramento nativo de banco de dados do Zabbix utiliza uma conexão ao banco de dados para cada item configurado no host monitorado. Isso já causa um bloqueio temporário do poller do Zabbix Agent, pois o processo precisa aguardar a resposta do banco de dados com a métrica solicitada pelo processo de coleta para liberar o recurso, que pode partir do Proxy ou do Zabbix Server. Aqui uma observação: se você não usa Zabbix Proxy para esse tipo de coleta, corrija isso imediatamente. Além do uso de recursos de poller, existe outro problema ainda maior, que é o overhead no uso de CPU e load do sistema. Isso acontece pelo uso excessivo aos arquivos de configuração odbc.ini e tnsnames.ora (quando o Oracle é monitorado).

Para evitar o atraso na coleta de dados em grandes ambientes (que monitoram centenas ou milhares de instâncias de banco de dados) são necessários recursos computacionais (CPU e memória) para suprir a demanda pelo “faminto” monitoramento ODBC.

O que vem por aí? Teremos novidades?

No dia 30/01/2020, a Zabbix SIA disponibilizou um novo template para monitoramento do MySQL. Eu testei esse template e ele é compatível com a versão 4.4. A Zabbix SIA já está preparando o terreno para as novidades presentes na versão 5.0

Vale ressaltar que a versão 4.4 do Zabbix não é LTS e eu não recomendo o uso dessa versão em ambiente de produção. Se você está ansioso para testar esse template, que o faça em uma ambiente de testes/homologação.

Qual o ganho de uso com esse template?

O que eu observei nesse template, é que ele utiliza 5 itens ODBC nativo (sendo 2 em regras de discovery) e o restante são itens dependente usando recursos de pré-processamento de valores.

Isso significa que você terá um ganho elevado na performance, pois o seu sistema reduzirá drasticamente o uso de poller do Zabbix responsável por esse tipo de coleta, sem contar a redução do uso de CPU, que também contribuirá com a diminuição do load do sistema. Outro detalhe importante é que na versão 4.4 o gerenciamento de pré-processamento dos valores é suportado pelo Zabbix Proxy.

Como funciona a coleta com esse novo template?

Nesse novo template tem o item Zabbix_raw_items, que é responsável por fazer a coleta executando a query “show global status”. Com essa coleta, o Zabbix irá processar todos os itens dependentes, sem a necessidade de abrir uma conexão com o banco de dados para fazer a coleta desses itens. Isso já justifica o fôlego que esse tipo de monitoramento terá.

Se você usa monitoramento ODBC, a versão 5.0 do Zabbix já promete ganhos de performance em seu ambiente.

Para quem não estava satisfeito com a performance do monitoramento ODBC e pensava em desenvolver uma API ou escrever um exporter do Prometheus para entregar as métricas de banco de dados pra o Zabbix via HTTP Agent, sugiro analisar antes esse template. Com certeza você também ganhará um fôlego para esse monitoramento e evitará desenvolver algo sem necessidade.

O novo Template MySQL ODBC está disponível no repositório da Zabbix SIA.

No próximo post eu vou mostrar como subir o Zabbix em container Docker para testar esse novo template monitorando o próprio banco de dados do Zabbix.

Publicado por Janssen dos Reis Lima

Possuo mais de 20 anos de experiência na área de TI. Graduado em Sistemas de Informação pela FeMASS e especialização em Administração em Redes Linux pela UFLA. Apaixonado por tecnologia, procuro sempre me manter atualizado. Já escrevi livro, já plantei árvore e tenho um filho.

Um comentário em “Novo fôlego para o monitoramento MySQL via ODBC

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: