This Docker Compose setup runs a self-contained observability stack with Prometheus, Grafana, Loki, Promtail, Tempo, and cAdvisor, wired for Traefik routing on a shared proxy network.
- Prometheus: time-series metrics storage and querying.
- Grafana: dashboards and visualization for metrics, logs, and traces.
- Loki: log storage backend.
- Promtail: log shipper to Loki (reads host and Docker logs).
- Tempo: trace storage backend.
- cAdvisor: container-level metrics exporter.
Note:
node_exporteris expected to be running on the host machine and is not dockerized in this compose file.
All user-specific values are set in .env and documented in .env.example. The DOMAIN variable defines the external hostname used by Traefik routing rules and service URLs.
- Grafana is exposed via Traefik at
https://$DOMAIN/. - Prometheus is exposed via Traefik at
https://$DOMAIN/prometheus. - Loki, Promtail, Tempo, and cAdvisor are not exposed publicly; they are only reachable within internal Docker networks.
- proxy (external): Shared Traefik network used to expose Grafana and Prometheus via HTTPS routers.
- pelican_nw (external): Existing external network used by Prometheus for upstream integrations.
- monitoring (bridge): Internal monitoring network for inter-service communication, with a fixed subnet and bridge name (
br-monitoring).
Named volumes persist state for:
- Prometheus (
data-prometheus) - Grafana (
data-grafana) - Loki (
data-loki) - Tempo (
data-tempo)