上个月接手一套跑了三年的老系统,第一周我差点被告警逼疯。手机平均每五分钟响一次,凌晨两点到五点最密集,全是同一批东西在反复报。有一回我半夜爬起来看,发现一条磁盘告警从下午四点就开始刷,每十分钟一条,刷了整整十个小时,磁盘使用率 81%,而阈值设的是 80%。

一开始我不敢动,刚接手,怕漏了真问题。就这么忍了一周,我发现我根本分不清哪个告警重要了——手机一响我就下意识划掉,跟关闹钟一样。有天早上客户报了个真故障,我翻告警记录,发现那条故障其实半夜就报了,但是淹没在两百多条无关告警里,我根本没看见。那天我坐在工位上挺长时间没说话。

然后我就干了一件事:拉出最近三十天的告警记录,按告警类型分组,数了数每种类型各报了多少次。结果一点不意外:前五类占了 96%。磁盘使用率 80% 阈值那类占了快一半,其次是一个探针连不上导致的全套服务误报,再就是几个历史遗留的监控项,服务都下线一年了还在采。

我列了个清单,逐条处理:阈值 80% 改成 90%,并且加了条规则,磁盘使用率超过 90% 且持续十分钟才告警,临时涨上去的就不报了;探针连不上改成了只告警一次,恢复后再断开才重新告警,不再每分钟刷;下线服务的监控项直接删。还有一类是同一个故障触发了五六个关联告警,我把它们合并成一条,详情里能看到全部关联项。

改完那周,告警从每天两百多条降到五条以内。刚开始我还有点不踏实,总觉得是不是把什么重要的也关了。后来证明没有——真出过两次事,一次是内存泄漏,一次是机房断电后一台机器没起来,告警都第一时间到了,我反而比之前更快注意到。

这事我复盘过好几遍,想说的其实就一句:告警不是越多越安全,告警多了人就麻了,真出事反而看不见。运维的精力是有限的,把告警收敛到"每条都值得看",比堆一堆永远没人看的告警有用得多。

当然,关告警这事得谨慎,我都是先看三十天数据再动手,一条条过,每关一条都记下来为什么关。后来这套清单交接给新同事,人家照着看,也知道哪些是真防线。