Files
charybdis/deploy/docker-compose.telemetry.yml
2026-05-12 17:06:43 +02:00

79 lines
2.2 KiB
YAML

# Docker Compose for OpenTelemetry Testing
# This sets up a complete observability stack for local development
version: '3.8'
services:
# OpenTelemetry Collector
# Receives telemetry data and exports to backends
otel-collector:
image: otel/opentelemetry-collector-contrib:latest
container_name: charybdis-otel-collector
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ./docker/otel-collector-config.yaml:/etc/otel-collector-config.yaml
ports:
- "4317:4317" # OTLP gRPC receiver
- "4318:4318" # OTLP HTTP receiver
- "8888:8888" # Prometheus metrics exposed by the collector
- "8889:8889" # Prometheus exporter metrics
- "13133:13133" # health_check extension
networks:
- charybdis-telemetry
# Jaeger - Distributed Tracing UI
jaeger:
image: jaegertracing/all-in-one:latest
container_name: charybdis-jaeger
environment:
- COLLECTOR_OTLP_ENABLED=true
ports:
- "16686:16686" # Jaeger UI
- "14250:14250" # Jaeger gRPC
networks:
- charybdis-telemetry
# Prometheus - Metrics Storage
prometheus:
image: prom/prometheus:latest
container_name: charybdis-prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
volumes:
- ./docker/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
ports:
- "9090:9090"
networks:
- charybdis-telemetry
# Grafana - Visualization
grafana:
image: grafana/grafana:latest
container_name: charybdis-grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_SECURITY_ADMIN_USER=admin
volumes:
- ./docker/grafana/provisioning:/etc/grafana/provisioning
- grafana-data:/var/lib/grafana
ports:
- "3000:3000"
networks:
- charybdis-telemetry
depends_on:
- prometheus
- jaeger
networks:
charybdis-telemetry:
driver: bridge
volumes:
prometheus-data:
grafana-data: