receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors: batch: timeout: 1s send_batch_size: 1024 memory_limiter: check_interval: 5s limit_mib: 512 resource: attributes: - key: cluster value: didi-prod action: insert - key: environment value: production action: insert tail_sampling: decision_wait: 10s num_traces: 100 expected_new_traces_per_sec: 10 policies: - name: errors-policy type: status_code status_code: { status_codes: [ERROR] } - name: slow-traces-policy type: latency latency: { threshold_ms: 1000 } - name: random-sampling type: probabilistic probabilistic: { sampling_percentage: 10 } exporters: # Jaeger receives via OTLP natively otlp/jaeger: endpoint: didi-jaeger:4317 tls: insecure: true # Prometheus exporter for service metrics derived from spans prometheus: endpoint: 0.0.0.0:8889 namespace: otel const_labels: cluster: didi-prod # Log to stdout for debugging (disable in prod) debug: verbosity: basic extensions: health_check: endpoint: 0.0.0.0:13133 service: extensions: [health_check] pipelines: traces: receivers: [otlp] processors: [memory_limiter, resource, tail_sampling, batch] exporters: [otlp/jaeger] metrics: receivers: [otlp] processors: [memory_limiter, resource, batch] exporters: [prometheus] telemetry: metrics: address: 0.0.0.0:8888