凌晨两点半,监控消停了,写写这个。
就是我那个磁盘监控脚本,我写了得有四年了吧,一直想重写一直懒得动,今年四月份,不对,五月份,终于让它重写了一版。那脚本实在烂得没边了,说出来有点丢人,但反正是我自己的东西,烂就烂吧。
原始代码长啥样呢,其实逻辑特别简单,就是个磁盘空间统计,超了阈值就发告警,然后定期把结果写进日志。但我当时写的时候图省事,取磁盘使用率那个命令的输出,我直接用sed切了第几行第几列,也没做容错,如果哪天命令输出格式变了或者机器有个什么特殊挂载点,它就开始瞎报。最要命的是警告判断那里,我写了个 if [ $usage -gt 90 ],然后紧接着还有个 else,那个 else 里面啥也没干,就一个冒号,占个位置,我当年估计是想着以后可能加东西就一直留着。结果就是,凡是没到90%的盘,都走一遍那个空分支,纯属白跑。
但光是这样我可能也忍了,毕竟能跑就是胜利,运维的脚本谁不是缝缝补补又三年。真正让我下定决心重写的,是前年冬天那件事,凌晨三点电网波动,机房好几台机器同时重启,重启完之后有个盘的挂载点没起来,那个盘的使用率查出来是个负的,我那个脚本就疯了,告警打了整整一宿,我把白班兄弟都吵起来了,最后他们查了半天才发现是我脚本的问题,不是真有故障。
那事过去之后我就一直说要改,人的惰性你知道的,一拖就是一年多,今年五月份,不对,六月份?反正就是某天凌晨,又一个盘因为写满了导致那个脚本误报,我实在受不了了,把代码往AI那一贴,跟它说,这脚本写得烂,你给我重写吧,逻辑不用变,就那个磁盘使用率采集和判断那块,做成不容易误报的。
然后它就给我输出了个新版,我一看,好家伙,那代码的质量,真是,把我衬托得像个刚入门的新手。它把命令输出的解析改成了用awk按字段取,加了异常值过滤,大于100或者小于0直接就跳过,还加了注释,每一步都写了这是在干嘛,连那个空else都给我删了,替换成一个判断空值的保护。
我盯着那段代码看了一会儿,说实话心里挺不是滋味的,我四年攒的那点东西,它三十秒就给我整明白了,但转念一想,又觉得挺爽的,毕竟以后不用再被那个破脚本坑了。
现在这版已经跑了两个多月了,再也没误报过。我把旧版存了个备份,留着,万一哪天AI出问题了,我回头看看旧版也好知道自己曾经有多能造。哦对了,旧版那个空else里面我塞了一行注释,写得什么来着,好像是当时加班到半夜,写着写着睡着了,醒来补了一行,"此处应有逻辑,但还没有",这行注释在新版里加上了,是AI看不懂好赖话,还以为是我留的什么伏笔,给修复了。
白班的兄弟不懂,夜班人跟自己的烂代码之间,其实是有感情的,毕竟它跟你一起熬过那么多宿,你骂它烂,但真删的时候还舍不得。不过这次我舍得,因为新版确实省心。先这样,困了,三点半还有个巡检。