遥测身份与指标维度
区分 Resource、用户 span 属性和 session 指标维度,排查标签缺失。
This page has not been translated into English yet. The original Chinese version is shown below.
Resource 属性跟随导出的 spans、logs 和 metrics。适合表示团队、部署环境或区域;用户与会话身份有独立语义,不应随意加入所有指标形成大量时间序列。
Resource 合并顺序
从低到高依次是 OTEL_RESOURCE_ATTRIBUTES、telemetry.resourceAttributes。设置文件中的同名键覆盖环境变量;OTEL_SERVICE_NAME 是单独例外,会覆盖其他来源的 service.name。
{
"telemetry": {
"resourceAttributes": {
"deployment.environment": "production",
"service.namespace": "engineering-tooling"
}
}
}OTEL_RESOURCE_ATTRIBUTES 使用逗号分隔 key=value。值中的空格写成 %20,逗号写成 %2C;未编码逗号会被当成下一项边界。
service.version 和 session.id 由运行时保留,用户提供的值会丢弃并写诊断警告;service.name 不属于保留项。保留 session.id 也防止通过 Resource 绕过指标基数限制。
标签为何不生效
保留键、格式错误、非字符串配置值或错误百分号编码会跳过对应项。诊断写入 ~/.qwen/log/otel-*.log,而不一定显示在终端。
先确认 telemetry.enabled=true,再检查实际 Qwen 进程中的环境变量和该日志中的 cannot override、Skipping malformed、must be a string 等线索。不要只在另一个 shell 中检查变量。
指标默认不带 session.id
telemetry.metrics.includeSessionId 默认 false。spans 和 logs 仍保留 session.id;metrics 去掉它以避免每个会话产生新的时间序列组合。
短期调试可设置 QWEN_TELEMETRY_METRICS_INCLUDE_SESSION_ID=true。长期按会话排障应转向 trace/log 查询;旧仪表盘依赖 session_id 指标维度时,需要迁移查询,而不是默认永久恢复高基数标签。
官方遥测页后面的旧总述仍说所有日志和指标都有 sessionId,应以专门的 cardinality 配置说明为准。
ARMS 用户身份
telemetry.userId 或 QWEN_TELEMETRY_USER_ID 显式写入 gen_ai.user.id。环境值和设置值都去除首尾空白,非空环境值优先;空环境值回退设置。值在启动时解析,改变后需重启。
这是 ARMS 的 span 扩展,作用于 interaction、LLM、Tool 和 Agent spans;不是标准 GenAI 用户字段,也不是 Resource、log、metric 或出站 Baggage 值。宜采用稳定假名;多用户 daemon/channel 不应设置一个进程级 userId 来代表所有来访者。
要让 ARMS 识别 GenAI 应用,还需明确设置 Resource 的 acs.arms.service.feature 为 genai_app。Qwen 不自动注入该字段,也不注入 gen_ai.span.kind;角色可由 gen_ai.operation.name 推导。