# OTel Collector config # # Receivers: OTLP (gRPC + HTTP) from backend, ui, runner # Processors: batch for efficiency, resource detection for host metadata # Exporters: Tempo (traces), Prometheus (metrics), Loki (logs) receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors: batch: timeout: 5s send_batch_size: 512 # Attach host metadata to all telemetry resourcedetection: detectors: [env, system] timeout: 5s exporters: # Traces → Tempo otlp/tempo: endpoint: tempo:4317 tls: insecure: true # Metrics → Prometheus (remote write) prometheusremotewrite: endpoint: "http://prometheus:9090/api/v1/write" tls: insecure_skip_verify: true # Logs → Loki (via OTLP HTTP endpoint) otlphttp/loki: endpoint: "http://loki:3100/otlp" tls: insecure: true # Collector self-observability (optional debug) debug: verbosity: basic extensions: health_check: endpoint: 0.0.0.0:13133 pprof: endpoint: 0.0.0.0:1777 service: extensions: [health_check, pprof] pipelines: traces: receivers: [otlp] processors: [resourcedetection, batch] exporters: [otlp/tempo] metrics: receivers: [otlp] processors: [resourcedetection, batch] exporters: [prometheusremotewrite] logs: receivers: [otlp] processors: [resourcedetection, batch] exporters: [otlphttp/loki]