Este repositório contém um stack completo de monitoramento com Prometheus e Grafana, incluindo exporters para monitoramento do host e containers Docker.
prometheus-public/
├── docker-compose.yml # Stack principal (Prometheus + Grafana)
├── Dockerfile # Dockerfile customizado do Prometheus
├── prometheus.yml # Configuração do Prometheus (template)
├── exporters/
│ └── docker-compose.yml # Exporters (Node Exporter + cAdvisor)
└── README.md
- Prometheus: Coleta e armazenamento de métricas
- Grafana: Visualização e dashboards
- Node Exporter: Monitora métricas do sistema host (CPU, memória, disco, rede)
- cAdvisor: Monitora containers Docker (uso de recursos, performance)
- Docker
- Docker Compose
Primeiro, inicie os exporters que coletam as métricas:
cd exporters
docker-compose up -dIsso iniciará:
- Node Exporter na porta
9100 - cAdvisor na porta
8080
Volte para o diretório raiz e inicie o Prometheus e Grafana:
cd ..
docker-compose up -dIsso iniciará:
- Prometheus na porta
9090 - Grafana na porta
3000
- URL: http://localhost:9090
- Use para consultar métricas diretamente e verificar targets
- URL: http://localhost:3000
- Usuário:
admin - Senha:
admin
O stack usa a variável HOST_EXPORTERS para definir onde encontrar os exporters:
# Usar host Docker interno (padrão)
HOST_EXPORTERS=host.docker.internal
# Ou especificar um IP específico
HOST_EXPORTERS=192.168.1.100O Prometheus está configurado para coletar métricas de:
-
Host System (
exporter-host):- Target:
host.docker.internal:9100 - Métricas do sistema operacional
- Target:
-
Docker Containers (
exporter-containers):- Target:
host.docker.internal:8080 - Métricas dos containers
- Target:
# Node Exporter
curl http://localhost:9100/metrics
# cAdvisor
curl http://localhost:8080/metrics- Acesse http://localhost:9090
- Vá para Status → Targets
- Verifique se ambos os targets estão UP
- Acesse http://localhost:3000
- Adicione o Prometheus como data source:
- URL:
http://prometheus:9090
- URL:
- Importe dashboards para visualizar as métricas
# Iniciar tudo
cd exporters && docker-compose up -d
cd .. && docker-compose up -d
# Parar tudo
docker-compose down
cd exporters && docker-compose down
# Ver logs
docker-compose logs -f prometheus
docker-compose logs -f grafana
# Reiniciar um serviço específico
docker-compose restart prometheusPara o Grafana, recomendo importar estes dashboards:
- Node Exporter Full: ID
1860 - Docker Container & Host Metrics: ID
10619 - cAdvisor exporter: ID
14282
- Verifique se os exporters estão rodando:
docker ps - Verifique a conectividade de rede entre containers
- Confirme se
host.docker.internalestá resolvendo corretamente
- Verifique se ambos estão na mesma rede Docker (
metrics) - Use
http://prometheus:9090como URL do data source
- Verifique se os volumes estão montados corretamente nos exporters
- Confirme se o cAdvisor tem acesso ao socket do Docker
Edite prometheus.yml para adicionar novos jobs:
scrape_configs:
- job_name: 'my-app'
static_configs:
- targets: ['app:8080']Adicione regras de alerta no prometheus.yml ou crie arquivos separados de regras.
- Altere as senhas padrão do Grafana
- Configure autenticação adequada
- Use volumes nomeados para persistência
- Configure backup dos dados
- Implemente TLS/SSL
Este projeto está sob a licença MIT.