# Claude Code has observability built in # Observability on Board — episode 01 # docs: https://code.claude.com/docs/en/monitoring-usage # page: https://observability-on-board.vercel.app/episodes/claude-code/ # video: https://youtube.com/shorts/9bP1stHfATg # # variants: ?ship=bronto|collector|custom ®ion=us &dataset= # ?endpoint=&header=&value= (custom target) &full=1 # ── Bronto ────────────────────────────────── { "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "1", "OTEL_METRICS_EXPORTER": "otlp", "OTEL_LOGS_EXPORTER": "otlp", "OTEL_TRACES_EXPORTER": "otlp", "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf", "OTEL_EXPORTER_OTLP_ENDPOINT": "https://ingestion.eu.bronto.io", "OTEL_EXPORTER_OTLP_HEADERS": "x-bronto-api-key=,x-bronto-dataset=claude-code" } } # The file can't expand shell variables, so paste the key literally and use one that # can only ingest. x-bronto-dataset names the dataset. # ── Local Collector ─────────────────────────────── { "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "1", "OTEL_METRICS_EXPORTER": "otlp", "OTEL_LOGS_EXPORTER": "otlp", "OTEL_TRACES_EXPORTER": "otlp", "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf", "OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318" } } # This assumes a Collector listening on localhost:4318; the # Local Collector setup (https://observability-on-board.vercel.app/setup/#collector) shows how to start one. # ── Your endpoint ────────────────────────────────── # This uses the endpoint and auth header you saved in the # setup guide (https://observability-on-board.vercel.app/setup/#custom). { "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "1", "OTEL_METRICS_EXPORTER": "otlp", "OTEL_LOGS_EXPORTER": "otlp", "OTEL_TRACES_EXPORTER": "otlp", "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf", "OTEL_EXPORTER_OTLP_HEADERS": "YOUR_AUTH_HEADER=YOUR_AUTH_VALUE", "OTEL_EXPORTER_OTLP_ENDPOINT": "YOUR_OTLP_ENDPOINT" } } # The endpoint is the base URL of your OTLP HTTP endpoint, without /v1/traces; Claude # Code appends the per-signal paths itself.