tasq/node_modules/agentdb/examples/docker-compose.observability.yml

88 lines
2.2 KiB
YAML

# Docker Compose setup for AgentDB Observability Stack
#
# Includes:
# - OpenTelemetry Collector
# - Prometheus (metrics storage)
# - Jaeger (trace storage and UI)
# - Grafana (visualization)
version: '3.8'
services:
# OpenTelemetry Collector
otel-collector:
image: otel/opentelemetry-collector-contrib:latest
command: ['--config=/etc/otel-collector-config.yaml']
volumes:
- ./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
- '13133:13133' # Health check
- '55679:55679' # ZPages
environment:
- ENVIRONMENT=development
networks:
- observability
# Prometheus
prometheus:
image: prom/prometheus:latest
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'
- '--web.enable-lifecycle'
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
ports:
- '9090:9090'
networks:
- observability
depends_on:
- otel-collector
# Jaeger
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- '16686:16686' # Jaeger UI
- '14250:14250' # Jaeger gRPC
- '14268:14268' # Jaeger HTTP
environment:
- COLLECTOR_OTLP_ENABLED=true
- SPAN_STORAGE_TYPE=memory
networks:
- observability
# Grafana
grafana:
image: grafana/grafana:latest
ports:
- '3000:3000'
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana-data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
- ./grafana/dashboards:/var/lib/grafana/dashboards
networks:
- observability
depends_on:
- prometheus
- jaeger
volumes:
prometheus-data:
grafana-data:
networks:
observability:
driver: bridge