目标不是看总消耗,而是发现异常。团队用量监控要有命名、项目、限流、告警和日报五个层,缺一层都会出问题。
一、先给 Key 建命名规范
示例
org-product-env-purpose-owner org = tb product=docbot env =prod purpose=summary owner =li-ning 实际 Key 名称: tb-docbot-prod-summary-li-ning
命名里至少要有项目、环境和用途。这样看用量时能直接定位到“哪个项目在消耗”,而不是一个模糊的 test key。
二、最小监控面板
| 指标 | 怎么算 | 为什么要看 |
|---|---|---|
| 每项目/日请求数 | 按 key 前缀聚合 | 发现刷量或循环调用 |
| 每项目/日 tokens | 输入 + 输出 | 定位消耗来源 |
| 平均输出长度 | output tokens / 请求数 | 发现输出失控 |
| 失败率 | 4xx/5xx / 总请求数 | 发现配置或额度问题 |
| P95 时延 | 按接口和模型分组 | 判断是否需要换档 |
三、日报结构
- 昨日消耗最高的前五个项目。
- 与上周同日对比的百分比变化。
- 异常 Key:今天消耗超过过去 7 天平均 3 倍的。
- 新增 Key、停用 Key、即将过期 Key。
- 失败率最高的接口。
四、告警阈值
示例
告警规则: 1. 单 Key 每小时请求数 > 10000 2. 单项目每日消耗 > 昨日 220% 3. 单项目失败率 > 8% 4. P95 时延 > 30s 5. 任何 key 出现在非白名单 IP
所有阈值都要避免单点误报。例如可以先发出低级别通知,连续 10 分钟才升级。
五、出问题时怎么看
- 先看是哪个 key,再看哪个模型,最后看是哪个接口。
- 如果是同步调用,检查是否有代码在重试循环。
- 如果输出长度陡增,检查是否有人改了提示词。
- 如果是新项目,可能是没有设置 max_output。
- 如果是某个模型暴涨,检查模型分流规则是否被改动。
六、把监控接入业务
只看平台日报不够,要在业务代码里加轻量埋点:
示例字段
{
"trace_id": "req-20261022-001",
"project": "docbot",
"key_name": "tb-docbot-prod-summary-li-ning",
"model": "gpt-6.1-sol",
"purpose": "summary",
"input_tokens": 2310,
"output_tokens": 572,
"latency_ms": 1830,
"status": 200,
"retry": 0
}只要记录这 10 个字段,后续定位异常时至少能省一半时间。
七、常见坑
- 没有记录 trace_id,无法和平台账单对齐。
- 只记 tokens,不记模型名,路由变化后无法分析。
- 把重试记成一次,导致低估成本。
- 聚合粒度太粗,问题发生到三天后才发现。
八、日报样例
示例
每日用量日报:2026-10-22 Top 项目: 1. docbot $146 +12% vs 7d avg 2. etl $84 +9% 3. crm $37 -4% 异常: - tb-etl-prod-embed-wang-qiang: 4.1x 请求量 - tb-docbot-prod-summary-li-ning: 平均输出 tokens +22% 失败率: - /v1/chat/completions 3.1% - /v1/embeddings 6.1% 新 Key: - tb-crm-prod-classify-zhang-wei
九、人员分工
- 项目负责人:确认业务是否有新任务。
- 技术负责人:确认模型、提示词和代码是否变化。
- 平台管理员:确认额度、告警和白名单。
- 财务:确认预算报表和分摊。
这四个人都在日报链路里,异常才不会悬空。
十、看什么指标先报警
优先级从高到低:泄露、刷量、关键队列失败率、预算超速、模型路由失误。日常日报里最关键的不是总消耗,而是变化量——今天是正常波动还是异常爆发。
十一、接入建议
如果刚起步,可以先不建独立监控系统,只用三张 CSV:日用量、项目列表、key 列表。每周合并一次,能解决 80% 异常。等业务量上去后再接自动化告警。
做法为本站整理;平台用量图配合外部日志使用效果更好。