指标基数预算:拒绝把用户 ID 贴进 label
背景 把 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 中。