运营说通知慢了,翻监控只有任务成功数,没有任何耗时数据,只能靠日志里的时间戳手算,算了 20 分钟还没结果。日志里能对上时间点,这种反而好排。
任务装饰器只记成功和失败,没有记录开始与结束时间。也没有按任务名聚合,单条日志看不出趋势。这一点先确认清楚,后面就不用反复试。
from prometheus_client import Histogram
TASK_TIME = Histogram('task_seconds', 'task duration', ['name'])
with TASK_TIME.labels('send_notice').time():
run()
这次卡住的地方就在「任务耗时统计」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。
处理上按这个顺序:在任务基类里统一记录开始时间 耗时 和任务名;把耗时打成直方图指标 按任务名分组;面板上同时看 P50 和 P95 平均值会掩盖长尾;设一条 P95 超过 3 秒的告警。
结果对不对很好判断,面板上能按任务名看到 P50 和 P95 曲线 改回旧版本后 P95 从 4 秒回到 1 秒以内。
