This stack provides a self-hosted observability solution for metrics, logs, and visualization.
- Prometheus → Metrics collection (scrapes from services and exporters)
- Grafana → Dashboards, visualization, alerting
- Loki → Centralized log aggregation (Grafana integrates with Loki)
observability/
├── docker-compose.yml
├── prometheus/
│ └── prometheus.yml
├── loki/
│ └── config.yml
├── grafana/
│ └── provisioning/
│ ├── datasources/
│ │ └── datasources.yml
│ └── dashboards/
│ └── dashboards.yml
├── scripts/
│ └── reset-observability.sh
├── README.md
└── observability-arch.mmd
-
Start services:
docker compose up -d
-
Access dashboards:
- Grafana → http://localhost:3000 (user: admin / pass: admin)
- Prometheus → http://localhost:9090
- Loki → http://localhost:3100
-
Reset stack:
./scripts/reset-observability.sh
flowchart TD
subgraph Observability
P[Prometheus] -->|metrics| G[Grafana]
L[Loki] -->|logs| G[Grafana]
end
subgraph AppServices[Your App + DBs]
API[API Server]
DB1[MongoDB]
DB2[Postgres]
DB3[Redis]
DB4[MySQL]
end
API -->|metrics endpoint| P
API -->|logs| L
DB1 -->|metrics exporter| P
DB2 -->|metrics exporter| P
DB3 -->|metrics exporter| P
DB4 -->|metrics exporter| P