OpenTelemetry 导出配置
选择本地文件或 OTLP collector,控制正文记录与敏感 span 属性。
Qwen Code 的 OpenTelemetry 默认关闭,用于向自己的文件或 collector 导出日志、指标和 trace。它与产品用量统计、API 调试文件是不同通道。
先选择目的地
本地文件配置:
{
"telemetry": {
"enabled": true,
"outfile": ".qwen/telemetry.log",
"logPrompts": false,
"includeSensitiveSpanAttributes": false
}
}设置 outfile 后停止 OTLP 导出,不需要另外设置 target。target 的 local/gcp 只是信息标签;改变标签不会把数据发送到云端。
标准 HTTP collector 配置片段:
{
"telemetry": {
"enabled": true,
"otlpProtocol": "http",
"otlpEndpoint": "http://localhost:4318",
"logPrompts": false,
"includeSensitiveSpanAttributes": false
}
}上例需确保没有同时生效的 outfile。collector 由使用者另行准备;配置完成不代表 collector 已经运行。
端点与覆盖
| 配置 | 默认或语义 |
|---|---|
| enabled | false |
| otlpProtocol | grpc;也可选 http |
| otlpEndpoint | http://localhost:4317 |
| otlpTracesEndpoint / otlpLogsEndpoint / otlpMetricsEndpoint | HTTP 的按信号端点覆盖,原样使用 |
| outfile | 未设置;一旦设置优先于 OTLP |
| logPrompts | true,控制提示及 API 请求/响应正文日志 |
| includeSensitiveSpanAttributes | false,控制敏感原生 span 属性及相关 bridge 行为 |
HTTP 基础端点自动追加 /v1/traces、/v1/logs、/v1/metrics;已有信号路径时原样使用。非标准后端路径应明确配置对应 per-signal endpoint。gRPC 按服务路由,不追加这些 HTTP 路径。
环境变量使用 QWEN_TELEMETRY_ENABLED、OTLP_ENDPOINT、OTLP_PROTOCOL、OTLP_TRACES_ENDPOINT、OTLP_LOGS_ENDPOINT、OTLP_METRICS_ENDPOINT、OUTFILE、LOG_PROMPTS 等完整 QWEN_TELEMETRY_ 前缀名称。按信号端点也接受 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT 等标准名称,Qwen 专用变量优先。
CLI 对应 --telemetry / --no-telemetry、--telemetry-otlp-endpoint、--telemetry-otlp-protocol、--telemetry-outfile、--telemetry-log-prompts / --no-telemetry-log-prompts。--telemetry-target 已弃用,不能用它替代端点路由配置。
敏感 span 的范围
includeSensitiveSpanAttributes 启用后可记录完整输入与输出消息、系统指令、工具定义、最终执行参数和成功工具结果。LLM 层包含展开后的历史、文件与工具内容;主 agent 层使用原始用户文本投影和最后的可见回答。数据可能包含文件内容或命令中的秘密。
sensitiveSpanAttributeMaxLength 默认 1048576,合法范围为 1–104857600,单位是 JavaScript 字符串长度,不是 UTF-8 字节。标准 GenAI JSON 属性必须完整且有效;循环、无效或超长值会整项省略,不生成截断 JSON、预览或 hash。兼容 new_context 仍保留自己的裁剪行为。
对应 QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH 设成非法整数会使遥测配置解析失败,不静默回退。collector 还可能有更小的单属性上限;应用端接受不等于后端一定接收。
静态 gen_ai.tool.description 不受敏感开关控制,最多 4096 UTF-16 code units,包括 MCP 等工具提供者的描述,但不包含动态调用细节。
日志与 span 的开关不等价
logPrompts 和 includeSensitiveSpanAttributes 分别控制不同路径。HTTP trace-only 场景的 log-to-span bridge 对 prompt、request_text、response_text 同时要求两者;敏感开关也影响该桥接中参数和错误内容的保留。
关闭敏感 span 属性不等于关闭 OTel logs、UI telemetry 或聊天记录中的正文。检查数据范围时需要逐一核对输出通道,不能只看一个开关。enabled、logPrompts、includeSensitiveSpanAttributes 的布尔环境变量 true/1 表示启用,其他值表示关闭。
阿里云或本地 collector
ARMS 使用控制台提供的真实 OTLP endpoint。认证 header 通过 OTEL_EXPORTER_OTLP_HEADERS 或按信号标准变量提供,当前 settings.json 没有专门的 OTLP auth headers 字段。
上游开发仓库还提供 npm run telemetry -- --target=local,会下载并启动 Jaeger 与 collector、修改本地工作区遥测配置;退出时停止 collector。仅需查看本地记录时可先选择 outfile,避免把该辅助脚本误认为普通只读检查。