背景

把 user_id 加进指标 label,看起来方便筛选,实际上可能为每个用户制造一组新的时间序列。成本会乘上其他标签组合。

核心判断

  1. 标签值使用路由模板、状态分类和有限业务枚举。
  2. 用户、订单与 trace ID 留在日志或追踪系统,必要时使用 exemplar 关联。
  3. 给每个指标定义标签组合上限,并监控活跃序列增长。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

sum by (route, status) (rate(http_requests_total[5m]))

# 单独执行,统计该指标的活跃序列数
count(http_requests_total)

边界与误区

/users/123 不是稳定 route 标签,应归一成 /users/:id。两个 PromQL 示例分别执行,分号不是查询之间的通用连接符。

验证方式

估算 route×status×method×instance 的组合数,压测随机用户输入,确认时间序列数量不随用户总数持续增长。

小结

指标标签只表达有限集合,用户、订单和 trace id 应放在日志或 trace 中。