plano/demos/observability/docker-compose.yaml

51 lines
1.5 KiB
YAML
Raw Normal View History

services:
# OpenTelemetry Collector: receives traces from Plano, derives Prometheus
# metrics via the spanmetrics connector, and forwards traces to Tempo.
otel-collector:
image: otel/opentelemetry-collector-contrib:0.102.0
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro
ports:
- "9317:4317" # OTLP gRPC (Plano sends traces here)
- "8889:8889" # Prometheus metrics endpoint (spanmetrics)
depends_on:
- tempo
tempo:
image: grafana/tempo:2.5.0
command: ["-config.file=/etc/tempo.yaml"]
volumes:
- ./tempo.yaml:/etc/tempo.yaml:ro
ports:
- "9200:3200" # Tempo HTTP API
prometheus:
image: prom/prometheus:v2.53.0
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.retention.time=7d"
volumes:
- ./prometheus.yaml:/etc/prometheus/prometheus.yml:ro
ports:
- "9190:9090"
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- otel-collector
grafana:
image: grafana/grafana:11.1.0
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- ./grafana/provisioning:/etc/grafana/provisioning:ro
- ./grafana/dashboards:/var/lib/grafana/dashboards:ro
ports:
- "9000:3000"
depends_on:
- prometheus
- tempo