Skip to content
FunCoding

Search

Search docs, Skills and MCP

遥测身份与指标维度

区分 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 推导。