周五晚上,订单同步失败了。告警发到一个每天收四十条消息的共享群里,其中大部分都是无关紧要的提醒。直到周一有客户来问订单为什么还没发货,才有人点开那条告警。
自动化确实发了告警,问题是没人看得出它比其他消息更重要。
先决定什么值得告警
从业务影响出发,而不是系统能报出的每一种错误。对每类故障问一句:如果一天内没人处理,会发生什么?
- 立即处理: 影响到客户、付款或截止时间。直接通知具体负责人。
- 当天处理: 工作被延误但可以补救。放进有人定时查看的待办队列。
- 每周回顾: 重试后已成功、轻微变慢或需要观察的趋势。放进汇总报告,而不是即时通知。
如果某类告警从来没有引发过任何处理,就调整级别或直接删掉。消息太多的群会让人习惯性忽略真正重要的那条。
写出能直接行动的告警
一条有用的告警,不用打开日志就能回答四个问题:
- 什么失败了: 写“仓库系统订单同步”,而不是“任务 7 报错”。
- 影响了什么: 多少条记录、哪些客户或日期,工作是否卡住。
- 已经发生了什么: 是否重试过、跳过了哪些记录、有没有写入一半的数据。
- 下一步做什么: 附上异常队列、处理手册或具体记录的链接。
敏感信息不要写进告警正文,链接到有权限控制的系统即可。
每类告警都有具体负责人
每类告警都要有负责人和备份人。在群里同步便于大家知情,但必须有一个具体的人负责确认。也要约定非工作时间怎么办,哪怕大多数故障的答案是“第二天早上处理”。
合并重复告警,并通知恢复
同一个故障发生两百次,应该发一条带次数的告警,而不是两百条消息。问题解决后发一条恢复通知,让大家知道是否还需要处理。
每月回顾一次告警
回看这个月触发了哪些告警:哪些引发了处理?哪些被忽略、重复或来得太晚?据此调整级别和措辞,删掉没人需要的告警。
告警只是处理的开始。后续怎么处理,可参考自动化异常队列指南。如需检查现有自动化的告警设置,欢迎联系 Storm Nova Labs。