监控告警藏在深夜值班的每一次弹窗里

上周四凌晨两点十七分,我在南京出租屋的床上弹起来。 枕头边的玻璃杯被震得晃出半圈水痕。 不是微信消息,是那个被我设成最高优先级的告警APP,音量拉到最大,震得整个床头柜都在响。我刚啃了半袋盐水鸭,睡了不到三个小时,脑子还转不过弯,第一反应是骂——上周刚把主库的磁盘阈值从85%调到90%,就怕半夜瞎叫,合着白改了? 摸过电脑按亮屏幕,才发现是从库的磁盘满了。我之前改阈值的时候,只动了主库的配置,从库的规则完全忘在脑后。群里十几个人在线,没人说话。

没人愿意接的告警都是无效噪音

盯着满屏的红色告警条,我后背凉了半分钟。还好从库只是同步延迟了四十秒,没影响主库写入,要是真等业务方打电话过来喊用户下单失败,我这个月的绩效直接打水漂。 其实我们团队早就对告警PTSD了。 去年底我们统计过,一个月收到的3200多条推送里,真正需要人介入处理的,只有17条。剩下的全是边角料:某个边缘静态资源服务器的磁盘到了70%,存的全是三个月前没人看的旧日志;测试环境的服务重启了,告警直接发到了生产群;甚至有一次,是监控服务器自己硬盘满了,发完最后一条告警直接宕机,我们还是等运营反馈用户打不开页面,才知道监控挂了。
运维值班手机收到告警弹窗截图
运维值班手机收到告警弹窗截图
大家慢慢就养成了条件反射:看到弹窗先扫一眼标题,不是标着P0的直接划走,甚至有同事把告警群设成了免打扰——毕竟总不能为了几条没用的通知,熬到后半夜对吧? 说实话,这种情况真的太普遍了。我见过太多团队,刚搭完监控系统就兴高采烈地把所有能设的告警全打开,CPU、内存、磁盘、网络,恨不得每个指标超1%就叫人,美其名曰“全面覆盖”,最后反而把真正重要的告警给淹了,全是没用的无效触发。

阈值不是拍脑袋定的生存线

很多人觉得监控告警嘛,就是拉个阈值,超了就发通知,能有多复杂? 真不是。 我之前跟杭州一个做基础架构的朋友聊,他们团队定一个告警规则,要拉上开发、测试、甚至产品开三次会。就拿最普通的磁盘使用率阈值来说,不是越高越好,也不是越低越好。我们最后给核心主库定的告警阈值规则是82%触发P1告警,88%触发P0,为什么?因为82%的时候,还有大概400G的剩余空间,足够我们手动清理旧binlog,或者临时扩容云盘,操作窗口至少有一个半小时;要是等90%再触发,剩下的空间可能撑不过晚高峰的两个小时,连登录服务器清理的时间都没有。
生产数据库磁盘使用率告警阈值配置表
生产数据库磁盘使用率告警阈值配置表
之前我们也踩过坑。刚做告警整改的时候,为了“更灵敏”,把接口响应时间的阈值从500ms降到了300ms,结果一周内弹了上千条告警,全是晚高峰的正常波动。开发直接找我抗议,说他写代码的功夫,手机震了二十次,根本没法集中注意力。 还有个容易被忽略的细节:告警的分级触达机制,不是发个企业微信就完事。P0的告警必须直接打值班电话,不能只发消息——很多人睡熟了根本看不到弹窗;P1的告警发企业微信加短信,二十分钟没人处理就自动升级到主管;P2的告警直接扔群里就行,不用单独打扰任何人。去年有个同行的团队,就是因为P0告警只发了企业微信,值班的人在洗澡没看到,支付系统挂了三个小时,赔了两百多万,这事我到现在都记得。

告警是用来解决问题不是制造焦虑

我们后来定了个规矩:每周告警复盘,先把上周的所有告警拉出来过一遍。 连续两周都没触发过的规则,直接删掉;触发了十次以上、每次都没人处理的,重新评估阈值。比如之前有个告警是“Nginx连接数超过1000”,我们统计了一下,晚高峰的连接数稳定在1200左右,根本没有异常,就把阈值调到了1500,之后这个规则再也没瞎叫过。 现在我们每个月的有效告警数,从最开始的三千多条降到了不到两百条,值班的人终于能睡个整觉。我们甚至给周末值班的同事准备了南京本地的盐水鸭券——毕竟谁也不想大周末的,正带着娃逛玄武湖呢,突然被告警叫起来处理问题。 前几天我把告警APP的音量从最大调到了中等。 昨天晚上我睡觉前特意扫了一眼监控大盘,所有指标都是绿的,桌上的半杯雨花茶还冒着热气。没有弹窗,没有震动,没有突然弹出来的红色提示。 这种踏实感,比什么都强。
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:监控告警藏在深夜值班的每一次弹窗里
文章链接:https://www.itcdj.com/it/123.html