Na última quarta-feira (17/08) aconteceu o DevOps & Tests Hack Nights uma iniciativa do Angelo Belchior, Renato Groff e Joel Rodrigues, e eu marquei presença palestrando sobre Monitoramento de Containers. Nesse post quero compartilhar um pouco do que mostrei na minha palestra.

Não vou entrar em detalhes aqui, mas a palestra foi gravada e você pode conferir o vídeo no final desse post. Agora se você não conhece nadinha de Docker recomendo à você, antes de prosseguir, conferir o blog da Lambda3que tem um monte de artigos bem legais sobre Docker.

Monitorando containers

Rodar um container é fácil, mante-lo rodando que é a parte difícil.

A premissa básica do desenvolvimento de software é que em algum momento algo vai dar errada, cedo ou tarde algo não irá funcionar corretamente e você terá mergulhar na longa empreitada de debugar e descobrir o que está acontecendo. Quem nunca! Agora, uma abordagem que pode te ajudar e salvar horas de trabalho é fazer o monitoramento da sua aplicação.

Monitoramento da a você a visibilidade sobre sua infraestrutura e aplicação. Não vá para produção sem instrumentação e/ou monitoramento.

Para começar a monitorar os seus containers, pode pode usar as tools que apresento abaixo, também falei sobre elas na palestra. Todas são muito simples de usar, sinta-se à vontade para escolher o que preferir 🙂

1. Docker Stats — A base de tudo

O Docker possui uma API para você saber como está a saúde de um container, basta você digitar o comando abaixo para ver um pequeno resumo sobre o consumo dos containers. Essa API também é a base para outras ferramentas de monitoramento.

$ docker stats

O resultado deverá ser algo parecido com isso:

docker stats

2. cAdvisor — A solução simples

Criado pelo Google para monitorar containers o cAdvisor é um projeto open-source, que coleta dados dos seus containers e exibe em uma página HTML com alguns gráficos. O Google já usa o cAdisor faz alguns anos para monitorar seus próprios containers.

O cAdvisor é usado pelo Google para monitorar containers

Existe uma imagem no Docker Hub, fazendo com que seu uso seja simples como rodar qualquer outro container, você pode usar o comando abaixo para iniciar o monitoramento:

$ sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

3- cAdvisor + InfluxDB + Grafana — O combo bem elaborado

Conheci essas ferramentas na palestra do Brian Christner na Docker Con EU, nela ele explica como criar um dashboard onde as informações do cAdvisor são enviadas para o InfluxDB e consumidas pelo Grafana.

O InfluxDB é um banco dedicado para armazenar dados em séries temporais, já o Grafana é um projeto open-source para montar dashboards. Você pode ver a palestra no vídeo abaixo.

Um dashboard de monitoramento visualizado no Grafana

Se você se interessou pelo assunto não deixe de conferir os slides e a gravação da palestra.

Gravação do evento, minha palestra começa aos 2h47m.

O que vocês acharam? Vocês monitoram seus containers? Não deixem de comentar!

PS: Você pode acompanhar meu posts no medium e também no twitter.

 PS2: Não deixem de conferir o blog do meu parceiro Nicolas Takashi http://ntakashi.net/ ele também marcou presença no Devops Tests Hack Nights.

Abraços, até a próxima.

José Barbosa