version: '3.8'
services:
otel-collector:
image: otel/opentelemetry-collector-contrib:0.91.0
container_name: otel-collector
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ./telemetry-config/otel-collector-config.yaml:/etc/otel-collector-config.yaml
ports:
- "4317:4317" - "4318:4318" - "8888:8888" - "8889:8889" - "13133:13133" depends_on:
- jaeger
- prometheus
networks:
- telemetry
jaeger:
image: jaegertracing/all-in-one:1.51
container_name: jaeger
environment:
- COLLECTOR_OTLP_ENABLED=true
ports:
- "16686:16686" - "14250:14250" - "14268:14268" networks:
- telemetry
prometheus:
image: prom/prometheus:v2.48.0
container_name: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
volumes:
- ./telemetry-config/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
ports:
- "9090:9090"
networks:
- telemetry
grafana:
image: grafana/grafana:10.2.2
container_name: grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana-data:/var/lib/grafana
- ./telemetry-config/grafana-datasources.yml:/etc/grafana/provisioning/datasources/datasources.yml
ports:
- "3000:3000"
depends_on:
- prometheus
- jaeger
networks:
- telemetry
networks:
telemetry:
driver: bridge
volumes:
prometheus-data:
grafana-data: