这个坑值得记一笔。成本告警配的是日账单,每天凌晨才出数,月中一次活动把调用量拉高十倍,告警到第二天早上才发,当月已经超支两万元。

刚开始盯着「阈值按固定金额,不跟预算比例挂钩」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。告警数据源是供应商的日结账单,天生滞后一天;本地只统计请求数,不统计 token 用量;没有单日突增检测,只能等总额超标。

动手时先用本地埋点做 15 分钟粒度的累计

python usage_rollup.py --window 15m --out redis

然后加同比突增规则而不是只看总额

python -c "print('alert if today > 2.0 * avg7d')"

接着设预算 70% 与 90% 两档阈值

python -c "print({'warn':0.7,'stop':0.9})"

演练一次触发确认通知链路通

python alert_test.py --rule budget_daily_spike

怎么算真的好了,看的是同一批现象。突增发生后 15 分钟内收到告警,当日成本在面板上可见,阈值触发时预算消耗比例与设定一致。

容易忽略的是,账单永远滞后,实时性只能靠本地埋点,两套数字允许有差异,但要能说清差在哪。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189