version: "3" services: # OTEL Collector to receive logs, metrics and traces from the application otel-collector: image: otel/opentelemetry-collector:0.111.0 command: [ "--config=/etc/otel-collector.yaml" ] volumes: - ./otel-collector.yaml:/etc/otel-collector.yaml ports: - "4317:4317" - "4318:4318" - "9201:9201" # Exports Traces to Tempo tempo: image: grafana/tempo:latest command: [ "-config.file=/etc/tempo.yaml" ] volumes: - ./tempo.yaml:/etc/tempo.yaml - ./tempo-data:/tmp/tempo ports: - "3200" # tempo - "4317" # otlp grpc - "4318" # otlp http # Exports Metrics to Prometheus prometheus: image: prom/prometheus:latest command: - --config.file=/etc/prometheus.yaml - --web.enable-remote-write-receiver - --enable-feature=exemplar-storage volumes: - ./prometheus.yaml:/etc/prometheus.yaml ports: - "9090:9090" # UI to query traces and metrics grafana: image: grafana/grafana:9.3.2 volumes: - ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml environment: - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - GF_AUTH_DISABLE_LOGIN_FORM=true - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor ports: - "3000:3000"