plano/demos/observability/docker-compose.yaml
Tom Stoffer a43c3d7557 Add demo of observability stack for monitoring Plano LLM gateway traffic
- Introduced Docker Compose setup with OpenTelemetry Collector, Tempo, Prometheus, and Grafana.
- Configured OTEL Collector to receive traces and derive Prometheus metrics.
- Added Grafana dashboards for visualizing LLM request metrics and latencies.
- Included configuration files for Prometheus and Tempo to support trace storage and metrics generation.
- Updated README with setup instructions and architecture overview.
2026-04-12 22:53:40 +12:00

50 lines
1.5 KiB
YAML

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