昨天跟一个刚入行的师弟吃饭,他问我:哥,你们老师傅是不是看到监控全绿就特别安心?
我愣了一下,说:恰恰相反。看到监控全绿,我第一反应是去查是不是采集端挂了。
他明显没听懂。我给他讲了三个事。
第一个事,2019年冬天,有个客户的业务系统连续两个月零告警,客户很开心,说你们监控做得真到位。结果年底一查,那台机器上采集 agent 两个月前就崩了,监控页面上显示的还是两个月前的数据。不是没故障,是压根没人知道发生了什么。那两个月客户业务其实卡过好几次,只是没人把账算到服务器头上。
第二个事,去年我们机房里有一台存储,健康检查全部通过,磁盘 smart 状态全是 PASS,连续 180 天零异常。然后有一天凌晨,它毫无预兆地掉盘了,RAID 组直接 degraded。事后复盘,日志里其实早有征兆——某一块盘的重映射扇区数在悄悄涨,从 3 涨到 47,花了四个月。但没人看,因为「没有告警」嘛。重映射扇区这玩意儿,默认阈值高得离谱,等它真正触发告警的时候,盘基本已经废了。
第三个事,是我自己的毛病。我值班的时候最怕半夜手机不响。手机一晚上没动静,我反而睡不踏实,会爬起来看一眼监控大屏。不是矫情,是这么多年被坑出来的条件反射——真正的大故障,往往是从「异常安静」开始的。
所以后来我们定了一条规矩:监控系统每周必须做一次自检,确认采集端活着、数据在更新、时间戳是新的。不为别的,就为了确认「一切正常」这四个字是真的,而不是监控瞎了。
这行干久了你会发现,运维的本质不是救火,是跟「未知」打交道。你永远不知道下一块硬盘什么时候坏,下一个流量高峰什么时候来,下一个被刷爆的接口是哪个。你能做的,就是把该看的日志看了,该设的阈值设了,该测的备份测了——然后祈祷自己看到的「正常」,是真的正常。
师弟又问:那你们怎么判断监控是活的?
我说,最简单的办法,随便找一台机器,手动触发一条测试告警,看它 5 分钟内能不能到你手机。连这个都做不到的话,监控做得再花哨也是摆设。
他若有所思地点点头。我知道他没完全听懂,但没关系,等他半夜被报警短信吵醒几次,就懂了。
对了,写这篇文章的时候我刚处理完一个工单:某客户说服务器「卡死了」,远程上去一看,负载 0.2,内存用了 30%,磁盘也够——一切正常。最后发现是客户本地网络的问题,跟我们一点关系没有。
你看,「一切正常」的时候,往往才是故事开始的时候。
评论