Como monitorar containers Docker com Prometheus e Grafana
Aprenda a configurar exporters no Docker para monitorar CPU, memória e I/O de disco em ambientes de produção usando Prometheus e Grafana.
Resumo
- Exporters traduzem métricas internas do sistema operacional e dos containers em formatos que o Prometheus compreende perfeitamente.
- O cAdvisor coleta dados granulares de consumo de recursos diretamente do núcleo do Linux para cada container Docker ativo.
- Dashboards no Grafana transformam dados brutos de séries temporais em gráficos intuitivos para tomada de decisão em produção.
- O ajuste correto de limites de recursos no Docker evita que um único container comprometa a estabilidade de toda a infraestrutura.
- Alertas proativos baseados em métricas de CPU e I/O impedem indisponibilidades antes que afetem os usuários finais.
Por que monitorar containers em produção?
Gerenciar aplicações conteinerizadas sem uma ferramenta de observabilidade é como dirigir um carro à noite sem painel. No ecossistema moderno, onde serviços sobem e descem em segundos, saber exatamente quanto de hardware cada aplicação consome deixou de ser opcional. Na prática, isso significa que antes mesmo que um sistema caia por falta de memória, você já recebeu um aviso no celular e pôde agir. Para entender o impacto disso na infraestrutura, vale conferir também o nosso guia sobre como refinar o Prometheus para evitar barulhos desnecessários na equipe de operação.
Quando rodamos dezenas de serviços isolados no Docker, a visibilidade nativa do comando stats se torna insuficiente para diagnósticos históricos. Precisamos de uma arquitetura que colete, armazene e exiba tendências ao longo do tempo. É aqui que entram duas das ferramentas mais poderosas do mercado de tecnologia livre: o Prometheus, que atua como um coletor incansável de dados numéricos, e o Grafana, responsável por desenhar esses números em painéis coloridos e fáceis de ler.
Entendendo o papel do cAdvisor na coleta de métricas
O Prometheus por si só não sabe o que é um container Docker; ele apenas lê páginas web formatadas com métricas numéricas. É aqui que entra o cAdvisor, um programa auxiliar criado pelo Google que roda ao lado dos seus serviços recolhendo dados de uso de CPU, memória, rede e disco de cada container. Na prática, ele funciona como um tradutor que olha para o motor do Docker e diz ao Prometheus exatamente o que está acontecendo embaixo do capô.
Configurar o cAdvisor é simples e geralmente exige apenas a execução de um container dedicado com acesso aos sockets do Docker no host. Esse componente consome poucos recursos e entrega uma riqueza impressionante de detalhes, permitindo auditar desde o consumo médio de uma aplicação web até gargalos profundos de leitura e escrita em disco. Se você está expandindo sua infraestrutura para hardwares alternativos, vale a pena ver como rodar containers Docker em RISC-V no seu homelab para testar novos horizontes de hardware.
Passo a passo para configurar o Prometheus e o cAdvisor
Para colocar essa engrenagem para funcionar no seu ambiente de produção, vamos utilizar o Docker Compose, uma ferramenta que ajuda a subir vários containers conectados de forma organizada. Crie um arquivo de configuração estruturado e garanta que as portas de comunicação estejam devidamente isoladas ou protegidas por redes internas seguras.
- Crie um arquivo chamado docker-compose.yml na sua pasta de trabalho e cole a estrutura base abaixo para subir o cAdvisor e o Prometheus.
- Insira o bloco de código funcional do cAdvisor apontando para os diretórios essenciais do host Linux para leitura correta do kernel.
version: '3.8' services: cadvisor: image: gcr.io/cadvisor/cadvisor:latest container_name: cadvisor ports: - '8080:8080' volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro restart: unless-stopped - Adicione o serviço do Prometheus no mesmo arquivo YAML, configurando o arquivo de regras para apontar para o endereço do cAdvisor recém-criado.
Após salvar o arquivo, execute o comando de inicialização no terminal para colocar os serviços em operação contínua. É fundamental garantir que o arquivo de configuração do Prometheus (prometheus.yml) esteja apontando corretamente para o alvo do cAdvisor na porta 8080, permitindo a raspagem periódica dos dados de desempenho.
Visualizando os dados de CPU e memória no Grafana
Com o Prometheus coletando métricas a cada quinze segundos, o próximo passo é conectar o Grafana a essa base de dados para começar a desenhar os gráficos. O Grafana se conecta ao Prometheus como uma fonte de dados nativa, exigindo apenas a inserção do endereço interno do servidor Prometheus. A partir daí, você pode importar dashboards prontos da comunidade ou criar painéis personalizados focados estritamente na saúde do seu cluster.
Nos painéis de CPU, por exemplo, você conseguirá ver se o limite de núcleos configurado no Docker está estrangulando alguma aplicação sob carga pesada. Na aba de memória, o foco deve ser monitorar o uso de memória RAM real versus a memória de troca (swap), identificando vazamentos de código antes que causem o encerramento forçado do processo pelo sistema operacional. Manter esse rigor de monitoramento evita surpresas desagradáveis em horários de pico de acesso.
Interpretando gargalos de I/O em discos de containers
O uso de disco costuma ser o calcanhar de Aquiles de aplicações conteinerizadas em produção, especialmente em bancos de dados ou sistemas que gerenciam muitos arquivos temporários. O cAdvisor expõe métricas detalhadas de bytes lidos e escritos, além da latência das operações de I/O por bloco. Na prática, isso significa que se uma aplicação começar a travar por lentidão no armazenamento, você saberá exatamente qual container está gerando mais carga de escrita.
Quando identificamos problemas de lentidão persistente ligados ao hardware físico ou subsistema de armazenamento subjacente, é importante lembrar que o gargalo pode vir do próprio servidor físico. Para cenários onde o estresse térmico ou o desgaste de componentes afeta o desempenho global da máquina, vale a pena consultar as orientações sobre como resolver thermal throttling no notebook e recuperar desempenho em estações de trabalho de apoio.
Considerações finais sobre observabilidade em containers
Implementar uma pilha sólida de monitoramento com Prometheus e Grafana transforma completamente a rotina de qualquer equipe de engenharia e operações. Em vez de apagar incêndios no escuro e adivinhar a causa de uma indisponibilidade, você passa a contar com dados precisos, históricos consistentes e alertas inteligentes. A disciplina de observar o comportamento dos containers em tempo real garante estabilidade, reduz custos operacionais e eleva a confiança de toda a empresa nos serviços entregues aos clientes.