Monitorando Docker com Zabbix 5 e Zabbix Agent2

bernardolankheet
Jun 1 · 5 min read

Com a chegada do novo Zabbix agente escrito em GO (suportado como beta desde da 4.4), trouxe o suporte default de monitoramento de Docker com o Zabbix na versão 5. Neste pequeno artigo demonstro de maneira rápida e pratica como podemos realizar este monitoramento.


Ambiente utilizado:

Centos 7

Docker: 19.03.7

Obs: Todos os passos realizados neste artigo, foram feitos em laboratórios. Para produção, sugiro reproduzir várias vezes este, consumir bastante as documentações e verificar as práticas de segurança.


Instalado o Agente via Pacote de Instalação

Instale o repo para o pacote do Zabbix Agent 2 no seu S.O.

Atualize os repositórios do sistema

Instale o pacote neste momento do Zabbix-agent2

Realize a configuração conforme necessário do zabbix_agent2.conf, sim para o novo agente há um arquivo de configuração com nome diferente do agente antigo do Zabbix.

Feito as configurações necessárias, inicie o agente

Verifique se está iniciado

Se tiver tudo OK, habilite-o no sistema.


Zabbix Agent 2

Agora com o agente instalado, podemos começar brincando com alguns comandos. As sintax dos comandos do agente continuam as mesmas da outra versão, quase não teve mudança

Agora realize um teste com a chave agent.version para obter a versão instalada do agente.

Você também pode utilizar a opção –P para listar todos os itens possíveis de serem monitorados pelo agente.

O que pude notar neste novo agente, além de ser escrito em linguagem GO com dito anteriormente…, recebeu outro nome (chamado de zabbix-agent2), também possui outro arquivo de configuração (zabbix_agent2.conf), devido a isto, você pode executar ambos ao mesmo tempo, basta utilizar outra porta.

Agora partindo para o arquivo de configuração (zabbix_agent2.conf) notei alguns novos parâmetros que vou descrever abaixo:

  • DenyKey É possível negar a execução de uma chave direto no arquivo de configuração, por default vem system.run.
  • EnablePersistentBuffer Habilitar um pequeno buffer no próprio agente. O agente irá guardar dados da coleta até o momento em que a comunicação voltar com o server.
  • PersistentBufferPeriod e PersistentBufferFile Local do arquivo e período para o Buffer.
  • LoadModulePath e LoadModule Configuração de diretório e modulo personalizados para o agent2.
  • Plugins.SystemRun……. Plugins.Redis…… Plugins.Mencached…… Plugins.Docker…… Plugins.Postgree….. São alguns parâmetros novos para os novos plug-ins do agente2.

Por fim, basta cadastrar o host no Zabbix e vincular um template seguindo os passos Default da ferramenta.


Zabbix Agent2 em Docker

Se iremos falar de monitoramento de docker, porque não rodar o agente em como um container? Já temos esta possibilidade também.

Realize o pull da imagem para seu repositório interno.

Depois basta iniciar o container.

A opção privileged é justamente para que o agente possa ter recurso as informações locais do docker host.

Monitorando o Docker

Com o agent2 instalado no Docker host. Chegamos a hora de começar a brincadeira com o Template do Docker.

Verifique se o seu Zabbix 5 já possui o template importado, se não tiver, poderá ser realizado o download a partir do repositório do Git da Zabbix SAI, basta clicar no link abaixo. Caso já tenha, pode vincular ao seu host.

Template App Docker

Após a realização do Download e importar no Zabbix. Vincule ao seu host docker, recém-criado no Zabbix e basta aguardar as coletas.

É possível testar as principais chaves com o zabbix-agent, basta executar:


How it works?

Mas ai surge uma pergunta básica …como o Template coleta?

Nesse resultado acima das coletas de imagens, podemos ver que a saída é formato json. O template primeira coleta os itens de Image, Containers, Info e Data Usage de forma Raw e depois utiliza pre-processamento com vários JSON Path para capturar a informação desejada.

Este JSON é uma consulta realizada direto no Daemon do Docker, sua API interna para administração, automação, orquestração e por aí vai.

Cannot fetch data.

Legal, cheguei até aqui, fiz tudo que pediu, mas não funciona, itens não são coletados, ferramenta não funciona, vou deixar isso de lado….. Calma jovem, isso pode ocorrer devido a dois fatores:

1 - Usuario zabbix sem permissão para consultar dados do Docker;

2- API do Docker não está exposta para consulta.

Vou mostrar como prosseguir em ambos os casos, realize ambas modificações separadas e teste para ver qual poderá ser seu caso…

  1. Incluir o usuário zabbix no grupo docker, isso dará permissão ao usuario que executa o agente a ter acesso as informações dos recursos do daemon do docker.

Reinicie o serviço do zabbix-agent2 e verifique se as coletas.

Verifique se será coletado, caso não, passe para o próximo passo.

2. No seu console e de utilize o CURL para verificar a conexão com a porta 4243 (porta da api no centOS que estou usando no laboratório).

Receberá que a conexão foi recusada.

Para expormos a porta TCP, precisará fazer uma pequena alteração na chamada do Daemon no Linux. Arquivo docker.service.

Precisará acrescentar na Linha ExecStart= a opção abaixo.

Altere de:

Para:

Será necessário recarregar o deamon do Sistema e depois reiniciar o serviço do docker.

Agora se utilizarmos o curl novamente, veremos que começará a retornar as informações em formato json.

Reinicie o serviço do zabbix-agent2 e verifique se as coletas.

No frontend já podemos verificar os itens coletados.

Por hoje é só pessoal. Ate a próxima!!!!

Elogios, criticas, recomendações, deixe um comentário.


Zabbix Brasil

zabbix grafana monitoring

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store