Este projeto implementa um sistema distribuído com 3 APIs que demonstra a utilização de observabilidade moderna usando OpenTelemetry para coleta de métricas, logs e traces.
O sistema consiste em:
- 3 aplicações NodeJS/Fastify que se comunicam entre si
- Jaeger - Visualização de traces distribuídos
- Prometheus - Coleta e armazenamento de métricas
- Grafana - Visualização de métricas, traces e logs
- Loki - Agregação de logs
- OpenTelemetry Collector - Coleta e exportação de telemetria
- Clone o repositório
git clone <seu-repositorio>
cd <pasta-do-projeto>- Inicie os containers
docker-compose up -d- Instale as dependências de cada API
cd api1 && npm install
cd ../api2 && npm install
cd ../api3 && npm install| Serviço | Porta | URL |
|---|---|---|
| API 1 | 8080 | http://localhost:8080 |
| API 2 | 8082 | http://localhost:8082 |
| API 3 | 8083 | http://localhost:8083 |
| Grafana | 3000 | http://localhost:3000 |
| Jaeger | 8081 | http://localhost:8081 |
| Prometheus | 9090 | http://localhost:9090 |
POST /trace- Inicia trace distribuídoPOST /error- Simula erro em cascata
POST /- Recebe dados da API 1POST /error- Propaga erro
POST /- Endpoint finalPOST /error- Retorna erro simulado
- Node.js
- Fastify
- OpenTelemetry
- Docker/Docker Compose
- Prometheus
- Grafana
- Jaeger
- Loki