This repository contains a minimal distributed system simulation and an accompanying observability stack to monitor its behavior under different load conditions.
The goal is to demonstrate how observability tools can be integrated into a distributed architecture to collect metrics, visualize performance, and detect bottlenecks.
This repository is organized into the following main directories and files:
.
├── baseline/ # 📦 Source code for the simulated system
├── observability/ # 📊 Configuration for the monitoring stack
├── Makefile # 🤖 Automation for setup, load testing, and scaling
└── README.md # 📜 This global overview file
Baseline System:
- API Service — receives requests and pushes jobs to a message queue (RabbitMQ)
- Worker Service — consumes messages from the queue and processes tasks
- RabbitMQ — message broker connecting API and workers
Observability Stack:
- Prometheus — collects metrics from all components
- Grafana — visualizes system metrics and queue status
- Loki — collect and store logs
- Jaeger — provides distributed tracing for request flows
Ensure you have the following installed:
- Docker & Docker Compose
make
# Build and start all components
make obs-up && make app-up- API http://localhost:8080
- RabbitMQ Management http://localhost:15672
- Grafana http://localhost:3000
- Loki http://localhost:3100
- Prometheus http://localhost:9090
- Jaeger http://localhost:16686
You can view all available Make commands at any time by running:
make
# or
make help