Claude Code exports three OTLP signals, not two. The setup only ever set
OTEL_METRICS_EXPORTER and OTEL_LOGS_EXPORTER, so no spans were ever sent --
a quiet failure, since metrics and logs kept flowing and only the traces
view stayed empty.
Verified against 2.1.220: the bundle reads OTEL_TRACES_EXPORTER and
OTEL_TRACES_EXPORT_INTERVAL, and emits spans under the tracer
com.anthropic.claude_code.tracing (interaction, llm_request, tool,
tool.execution, tool.blocked_on_user, subagent.spawn, hook).
- otel.env.example: add OTEL_TRACES_EXPORTER + OTEL_TRACES_EXPORT_INTERVAL
- docs/OTEL.md: fold traces into the narrative, document the span taxonomy
and TRACEPARENT inheritance, and note that traces need a trace store
(Tempo/Jaeger) where metrics and logs do not
Co-Authored-By: Claude Opus 5 <[email protected]>