跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

监控与遥测(OpenTelemetry)

用 OpenTelemetry 导出 Claude Code 的用量、成本和工具活动:快速开始、管理员配置、常用变量、指标与事件,以及隐私相关开关。

通过 OpenTelemetry(OTel)导出遥测数据,可以在整个组织范围内跟踪 Claude Code 的用量、成本和工具活动:指标以标准指标协议导出为时间序列,事件通过日志/事件协议导出,另外还有可选的分布式追踪(beta)。

快速开始

用环境变量配置:

# 1. 启用遥测
export CLAUDE_CODE_ENABLE_TELEMETRY=1

# 2. 选择导出器(都是可选的,只配需要的)
export OTEL_METRICS_EXPORTER=otlp       # 可选:otlp, prometheus, console, none
export OTEL_LOGS_EXPORTER=otlp          # 可选:otlp, console, none

# 3. 配置 OTLP 端点
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

# 4. 需要认证时设置请求头
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

# 5. 调试时缩短导出间隔,生产环境要改回来
export OTEL_METRIC_EXPORT_INTERVAL=10000  # 默认 60000ms
export OTEL_LOGS_EXPORT_INTERVAL=5000     # 默认 5000ms

claude

验证:导出指标的配置,在后端找 claude_code.session.count(会话启动时发出);只导出日志的配置,提交一个提示词后找 claude_code.user_prompt 事件。没数据时用 claude --debug-file <path> 启动,导出器的失败会以 [3P telemetry] 错误出现([Anthropic telemetry] 前缀的行描述的是 Anthropic 自己的运营遥测,不代表你的配置有问题)。

管理员配置

管理员可以通过托管设置文件为所有用户配置 OpenTelemetry,例如:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer example-token"
  }
}

几个要点:

  • Claude Code 忽略仓库里 .claude/settings.json 和 .claude/settings.local.json 中的 OTel 导出器变量,仓库无法借此开启遥测、选择去向或捕获内容;请在托管设置里,或由开发者在自己的 shell / ~/.claude/settings.json 里设置。仓库仍可把某个信号的导出器选择器(如 OTEL_LOGS_EXPORTER)设为 none 来关掉它,除非托管设置、--settings 文件或启动环境已设置该变量。
  • Claude Code 不会把 OTEL_* 变量传给它启动的子进程(Bash 工具、hooks、MCP 服务器、语言服务器)。
  • 托管设置锁定 OTLP 去向:在托管设置里设置了 OTEL_EXPORTER_OTLP_* 变量后,Claude Code 会在启动时移除与之冲突的开发者变量并在调试日志里警告。设置了 OTEL_EXPORTER_OTLP_ENDPOINT 会移除开发者设置的所有分信号端点;设置了协议变量会移除所有分信号协议;设置了 HEADERS、客户端密钥或客户端证书时,会移除对应的分信号版本,并移除所有开发者设置的端点变量(避免凭据发到托管设置没有选定的收集器)。导出器选择器(OTEL_METRICS_EXPORTER、OTEL_LOGS_EXPORTER)按正常的逐键优先级处理,开发者仍可禁用某个信号,需要锁定就在托管设置里也设。

常用配置变量

变量说明
CLAUDE_CODE_ENABLE_TELEMETRY启用遥测收集(必需),设为 1
OTEL_METRICS_EXPORTER指标导出器,逗号分隔;console、otlp、prometheus、none
OTEL_LOGS_EXPORTER日志/事件导出器;console、otlp、none
OTEL_EXPORTER_OTLP_PROTOCOL所有信号的 OTLP 协议;Claude Code 没有默认协议,每个 otlp 导出器都要设它或分信号协议;grpc、http/json、http/protobuf
OTEL_EXPORTER_OTLP_ENDPOINT所有信号的收集器端点
OTEL_EXPORTER_OTLP_{METRICS,LOGS}_{PROTOCOL,ENDPOINT,HEADERS}分信号覆盖;分信号 headers 与通用 headers 合并
OTEL_EXPORTER_OTLP_HEADERSOTLP 认证请求头
OTEL_METRIC_EXPORT_INTERVAL / OTEL_LOGS_EXPORT_INTERVAL导出间隔(毫秒),默认 60000 / 5000
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE指标时间性,默认 delta;后端需要累积值时设 cumulative
CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS动态请求头刷新间隔,默认 29 分钟

内容与隐私相关开关(默认全部关闭)

这些开关决定遥测里是否带上敏感内容,开启前要评估合规风险:

  • OTEL_LOG_USER_PROMPTS:记录用户提示词内容
  • OTEL_LOG_ASSISTANT_RESPONSES:记录助手回复文本;未设置时回退到 OTEL_LOG_USER_PROMPTS 的值
  • OTEL_LOG_TOOL_DETAILS:记录工具参数和输入(Bash 命令、MCP 服务器和工具名、skill 名等)
  • OTEL_LOG_TOOL_CONTENT:在追踪里记录工具内容(需先启用追踪)
  • OTEL_LOG_MANAGED_SETTINGS:在托管设置解析事件里附带脱敏后的托管设置及其 SHA-256 摘要
  • OTEL_LOG_RAW_API_BODIES:输出完整的 Messages API 请求/响应 JSON,包含整个对话历史,开启它意味着同意上面所有内容的记录
  • CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH:内容类属性的最大长度,默认 60 KB

指标

指标说明单位
claude_code.session.count启动的 CLI 会话数无
claude_code.lines_of_code.count修改的代码行数无
claude_code.pull_request.count创建的 PR 数无
claude_code.commit.count创建的 git 提交数无
claude_code.cost.usage会话成本USD
claude_code.token.usage使用的 token 数tokens
claude_code.code_edit_tool.decision代码编辑工具权限决策次数无
claude_code.active_time.total活跃总时长s

只用 prometheus 导出器时,Claude Code 会省略 USD、tokens、s 单位,保证抓取结果是合法的 Prometheus 文本格式。

事件、分析与审计

除指标外,Claude Code 还导出大量事件(用户提示词、工具结果、API 请求、权限决策、MCP 活动等),可用于:

  • 用量与成本监控:按用户、模型、团队分段,设置告警,识别重试耗尽等问题
  • 安全审计:把操作归因到用户,审计 MCP 活动,把安全问题映射到对应事件,并把事件送入 SIEM
  • 多团队组织:用资源属性区分团队和部门
  • ROI 衡量:官方提供相关资源

每个事件和属性的详细字段、追踪(beta)的 span 结构、动态请求头配置、各后端(指标、事件/日志、追踪)的注意事项、Amazon Bedrock 上的监控方式,请以官方原文为准。