# OpenTelemetry Collector + Tempo — Auto-generated by hmcmkit # Distributed tracing: App → OTel Collector → Tempo → Grafana # OpenTelemetry Collector # helm install otel open-telemetry/opentelemetry-collector -f otel-tempo.values.yaml opentelemetry-collector: mode: deployment config: receivers: otlp: protocols: grpc: { endpoint: "0.0.0.0:4317" } http: { endpoint: "0.0.0.0:4318" } processors: batch: timeout: 5s send_batch_size: 1024 exporters: otlp: endpoint: "tempo:4317" tls: { insecure: true } prometheus: endpoint: "0.0.0.0:8889" connectors: spanmetrics: histogram: explicit: buckets: [5ms, 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s, 2.5s] dimensions: - name: http.method - name: http.status_code - name: service.name service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [otlp] traces/sentry: receivers: [otlp] processors: [batch] exporters: [sentry] metrics: receivers: [otlp, spanmetrics] processors: [batch] exporters: [prometheus] # Sentry Exporter — Forward error spans to Sentry for correlation # Traces with error status → Sentry issue linkage sentry-exporter: dsn: "${SENTRY_DSN}" environment: "${ENVIRONMENT}" insecure: false # Tempo (Trace Backend) # helm install tempo grafana/tempo -f otel-tempo.values.yaml tempo: persistence: enabled: true size: 10Gi config: server: http_listen_port: 3100 distributor: receivers: otlp: protocols: grpc: {} storage: trace: backend: local local: path: /var/tempo/traces # Blackbox Exporter (Uptime Monitoring) # helm install blackbox prometheus-community/prometheus-blackbox-exporter blackbox-exporter: config: modules: http_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2.0"] valid_status_codes: [200, 301, 302] follow_redirects: true