背景
把 user_id 加进指标 label,看起来方便筛选,实际上可能为每个用户制造一组新的时间序列。成本会乘上其他标签组合。
核心判断
- 标签值使用路由模板、状态分类和有限业务枚举。
- 用户、订单与 trace ID 留在日志或追踪系统,必要时使用 exemplar 关联。
- 给每个指标定义标签组合上限,并监控活跃序列增长。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
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 中。