Este projeto configura um pipeline de observabilidade completo usando o Docker Compose, incluindo:
-
OpenTelemetry Collector – Recebe e processa dados de telemetria (métricas e rastros)
-
Prometheus – Coleta e armazena dados de métricas
-
Grafana – Visualiza as métricas com painéis
-
Aplicativo FastAPI – Um aplicativo da web instrumentado que envia dados de rastreamento para o Coletor
Para exemplos adicionais e soluções OpenTelemetry estendidas, confira o repositório Open-Telemetry-Solutions .
📁 Estrutura do Projeto
O repositório está organizado da seguinte forma:
-
docker-compose.yml: define todos os quatro serviços (Collector, Prometheus, Grafana, FastAPI).
-
otel-collector-config.yaml: Configura o Collector para receber telemetria OTLP e exportar métricas e rastreamentos.
-
prometheus.yml: Configura o Prometheus para extrair métricas do Coletor.
-
datasource.yml: Provisiona o Grafana com uma fonte de dados do Prometheus.
-
fastapi-app/: Contém o aplicativo FastAPI que envia dados de rastreamento para o Coletor.
🚀 Começando
1. Clone o Repositório
2. Execute o Docker Compose
Inicie todos os serviços com:
Este comando iniciará:
-
OpenTelemetry Collector nas portas 4317 (gRPC) e 4318 (HTTP)
-
Prometheus na porta 9090
-
Grafana na porta 3000
-
Aplicação FastAPI na porta 8000
🛠️ Arquivos de configuração
docker-compose.yml
O arquivo Compose integra todos os serviços. Observe que o serviço FastAPI é criado a partir do diretório local e configurado para enviar dados de rastreamento para o endpoint do Coletor:
otel-collector-config.yaml
Este arquivo configura o Coletor para receber dados OTLP para métricas e rastreamentos e enviar métricas ao Prometheus. Os rastreamentos são enviados para um exportador de depuração que os registra para facilitar a verificação.
prometheus.yml
Este arquivo instrui o Prometheus a extrair métricas do exportador Prometheus do Collector:
grafana/provisionamento/fontes de dados/fonte de dados.yml
O Grafana é provisionado automaticamente com o Prometheus como sua fonte de dados padrão:
🚀 Aplicação FastAPI
O serviço FastAPI é instrumentado com OpenTelemetry para enviar dados de rastreamento ao Collector.
fastapi-app/Dockerfile
fastapi-app/requisitos.txt
fastapi-app/main.py
🖥️ Acesse as Interfaces
-
Grafana : http://localhost:3000
Login:admin / admin
-
Prometeu : http://localhost:9090
-
Aplicação FastAPI : http://localhost:8000
O endpoint/
retorna uma mensagem de boas-vindas e/trigger
gera um rastreamento manual.
📡 Enviando Telemetria
Seu aplicativo FastAPI instrumentado envia automaticamente dados de rastreamento para o Coletor em:
-
http://otel-collector:4318/v1/traces
(dentro de redes Docker)
Fora do Docker, você pode testar usando:
-
http://localhost:4318/v1/traces
(se você mapear a porta externamente)
Para métricas, envie para:
-
http://localhost:4318/v1/metrics
(HTTP) ou -
grpc://localhost:4317
(gRPC)
Você pode usar seus próprios aplicativos ou ferramentas instrumentadas, como otel-cli .
⚠️ Correção do erro da porta 55679 (zPages)
Se você encontrar este erro:
Soluções:
-
Opção 1 : remova a porta de mapeamento de linha
55679
dodocker-compose.yml
se você não estiver usando o zPages. -
Opção 2 : Altere para uma porta livre, por exemplo:
Em seguida reinicie com:
🧱 Crie painéis no Grafana
Assim que suas métricas estiverem chegando:
-
Efetue login no Grafana em http://localhost:3000 .
-
Crie novos painéis para visualizar métricas importantes, como:
-
Solicitar taxas
-
Métricas de aplicativos personalizados
-
Contagens de erros
-
E muito mais!
-
📚 Recursos adicionais
Explore mais soluções para OpenTelemetry e observabilidade consultando o repositório Open-Telemetry-Solutions . Ele contém exemplos detalhados, integrações e práticas recomendadas que podem ser úteis para seus projetos.
📬 Feedback e contribuições
Tem ideias ou melhorias? Abra um issue ou envie um pull request! Contribuições são bem-vindas.
📄 Licença
Este projeto está licenciado sob a Licença MIT .