了解如何为 Claude Code 启用和配置 OpenTelemetry。
/Library/Application Support/ClaudeCode/managed-settings.json
/etc/claude-code/managed-settings.json
C:\ProgramData\ClaudeCode\managed-settings.json
环境变量 | 描述 | 示例值 |
---|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY | 启用遥测收集(必需) | 1 |
OTEL_METRICS_EXPORTER | 指标导出器类型(逗号分隔) | console 、otlp 、prometheus |
OTEL_LOGS_EXPORTER | 日志/事件导出器类型(逗号分隔) | console 、otlp |
OTEL_EXPORTER_OTLP_PROTOCOL | OTLP 导出器协议(所有信号) | grpc 、http/json 、http/protobuf |
OTEL_EXPORTER_OTLP_ENDPOINT | OTLP 收集器端点(所有信号) | http://localhost:4317 |
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | 指标协议(覆盖通用设置) | grpc 、http/json 、http/protobuf |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | OTLP 指标端点(覆盖通用设置) | http://localhost:4318/v1/metrics |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | 日志协议(覆盖通用设置) | grpc 、http/json 、http/protobuf |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OTLP 日志端点(覆盖通用设置) | http://localhost:4318/v1/logs |
OTEL_EXPORTER_OTLP_HEADERS | OTLP 身份验证标头 | Authorization=Bearer token |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY | mTLS 身份验证的客户端密钥 | 客户端密钥文件路径 |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE | mTLS 身份验证的客户端证书 | 客户端证书文件路径 |
OTEL_METRIC_EXPORT_INTERVAL | 导出间隔(毫秒)(默认:60000) | 5000 、60000 |
OTEL_LOGS_EXPORT_INTERVAL | 日志导出间隔(毫秒)(默认:5000) | 1000 、10000 |
OTEL_LOG_USER_PROMPTS | 启用用户提示内容日志记录(默认:禁用) | 1 启用 |
环境变量 | 描述 | 默认值 | 禁用示例 |
---|---|---|---|
OTEL_METRICS_INCLUDE_SESSION_ID | 在指标中包含 session.id 属性 | true | false |
OTEL_METRICS_INCLUDE_VERSION | 在指标中包含 app.version 属性 | false | true |
OTEL_METRICS_INCLUDE_ACCOUNT_UUID | 在指标中包含 user.account_uuid 属性 | true | false |
.claude/settings.json
:
OTEL_RESOURCE_ATTRIBUTES
环境变量添加自定义属性来区分不同的组:
OTEL_RESOURCE_ATTRIBUTES
环境变量遵循 W3C Baggage 规范,该规范有严格的格式要求:user.organizationName=My Company
是无效的key1=value1,key2=value2
"key=value with spaces"
)不受 OpenTelemetry 规范支持,会导致属性以引号为前缀。属性 | 描述 | 控制方式 |
---|---|---|
session.id | 唯一会话标识符 | OTEL_METRICS_INCLUDE_SESSION_ID (默认:true) |
app.version | 当前 Claude Code 版本 | OTEL_METRICS_INCLUDE_VERSION (默认:false) |
organization.id | 组织 UUID(已认证时) | 可用时始终包含 |
user.account_uuid | 账户 UUID(已认证时) | OTEL_METRICS_INCLUDE_ACCOUNT_UUID (默认:true) |
terminal.type | 终端类型(例如,iTerm.app 、vscode 、cursor 、tmux ) | 检测到时始终包含 |
指标名称 | 描述 | 单位 |
---|---|---|
claude_code.session.count | 启动的 CLI 会话计数 | count |
claude_code.lines_of_code.count | 修改的代码行数计数 | count |
claude_code.pull_request.count | 创建的拉取请求数量 | count |
claude_code.commit.count | 创建的 git 提交数量 | count |
claude_code.cost.usage | Claude Code 会话的成本 | USD |
claude_code.token.usage | 使用的令牌数量 | tokens |
claude_code.code_edit_tool.decision | 代码编辑工具权限决策计数 | count |
claude_code.active_time.total | 总活跃时间(秒) | s |
type
:("added"
、"removed"
)model
:模型标识符(例如,“claude-3-5-sonnet-20241022”)type
:("input"
、"output"
、"cacheRead"
、"cacheCreation"
)model
:模型标识符(例如,“claude-3-5-sonnet-20241022”)tool
:工具名称("Edit"
、"MultiEdit"
、"Write"
、"NotebookEdit"
)decision
:用户决策("accept"
、"reject"
)language
:编辑文件的编程语言(例如,"TypeScript"
、"Python"
、"JavaScript"
、"Markdown"
)。对于无法识别的文件扩展名返回 "unknown"
。OTEL_LOGS_EXPORTER
时):
claude_code.user_prompt
属性:
event.name
:"user_prompt"
event.timestamp
:ISO 8601 时间戳prompt_length
:提示长度prompt
:提示内容(默认编辑,使用 OTEL_LOG_USER_PROMPTS=1
启用)claude_code.tool_result
属性:
event.name
:"tool_result"
event.timestamp
:ISO 8601 时间戳tool_name
:工具名称success
:"true"
或 "false"
duration_ms
:执行时间(毫秒)error
:错误消息(如果失败)decision
:"accept"
或 "reject"
source
:决策来源 - "config"
、"user_permanent"
、"user_temporary"
、"user_abort"
或 "user_reject"
tool_parameters
:包含工具特定参数的 JSON 字符串(可用时)
bash_command
、full_command
、timeout
、description
、sandbox
claude_code.api_request
属性:
event.name
:"api_request"
event.timestamp
:ISO 8601 时间戳model
:使用的模型(例如,“claude-3-5-sonnet-20241022”)cost_usd
:估计成本(美元)duration_ms
:请求持续时间(毫秒)input_tokens
:输入令牌数量output_tokens
:输出令牌数量cache_read_tokens
:从缓存读取的令牌数量cache_creation_tokens
:用于缓存创建的令牌数量claude_code.api_error
属性:
event.name
:"api_error"
event.timestamp
:ISO 8601 时间戳model
:使用的模型(例如,“claude-3-5-sonnet-20241022”)error
:错误消息status_code
:HTTP 状态码(如果适用)duration_ms
:请求持续时间(毫秒)attempt
:尝试次数(对于重试请求)claude_code.tool_decision
属性:
event.name
:"tool_decision"
event.timestamp
:ISO 8601 时间戳tool_name
:工具名称(例如,“Read”、“Edit”、“MultiEdit”、“Write”、“NotebookEdit” 等)decision
:"accept"
或 "reject"
source
:决策来源 - "config"
、"user_permanent"
、"user_temporary"
、"user_abort"
或 "user_reject"
指标 | 分析机会 |
---|---|
claude_code.token.usage | 按 type (输入/输出)、用户、团队或模型分解 |
claude_code.session.count | 跟踪随时间的采用和参与度 |
claude_code.lines_of_code.count | 通过跟踪代码添加/删除来衡量生产力 |
claude_code.commit.count 和 claude_code.pull_request.count | 了解对开发工作流程的影响 |
claude_code.cost.usage
指标有助于:
user.account_uuid
、organization.id
、session.id
、model
和 app.version
进行分段。
service.name
:claude-code
service.version
:当前 Claude Code 版本os.type
:操作系统类型(例如,linux
、darwin
、windows
)os.version
:操作系统版本字符串host.arch
:主机架构(例如,amd64
、arm64
)wsl.version
:WSL 版本号(仅在 Windows Subsystem for Linux 上运行时存在)com.anthropic.claude_code
OTEL_LOG_USER_PROMPTS=1