马斯克亲述:自动化运维人该放弃的3个技术执念
|
去年跟特斯拉那帮运维撕逼的时候,马斯克在内部群里甩了段话,说“自动化运维人该放弃的三个技术执念”。当时我正盯着监控屏上跳红的报警,手机屏幕还粘着外卖油渍——现在想起来,那碗黄焖鸡米饭的汤汁渗进手机壳缝里,到现在都没彻底清理干净。 第一个执念是“全链路监控必须零盲区”。我原以为这是行业共识,结果马斯克直接开喷:“你们在监控上花的钱比服务器电费还高,结果出了问题还是得靠人肉排查?”去年双十一我们搞全链路压测,监控系统装了二十三个插件,从网络延迟到磁盘IO,连虚拟机里的进程调度都要抓——结果大促当天,某个中间件的线程池爆了,监控却没报,因为那个插件的日志采样率被运维小哥偷偷调低了——他说“怕影响性能”。后来查监控日志,发现采样间隔是五分钟,而线程池从满到崩溃只用了十八秒。马斯克说得对,监控是给人看的,不是给机器看的,你花三个月搭的完美监控,可能还不如一个能实时弹窗的钉钉机器人。 那天在机房,空调嗡嗡响,老张蹲在机柜前拆硬盘,手里攥着螺丝刀,突然抬头说:“你说咱们是不是被监控绑架了?”他刚被领导骂,因为某台服务器的CPU使用率没监控到——那台服务器是测试环境,根本没人用。我低头看手机,群里正在吵“要不要把容器日志也接入监控”,有人说“必须接,不然出问题找不到根因”,另一个人反驳“接了日志量暴增,ELK集群会崩”。我盯着屏幕上的吵架记录,突然闻到老张身上有股汗味——他昨晚通宵处理告警,早上没洗澡就来了。 第二个执念是“自动化脚本必须100%可靠”。马斯克举了个例子:他们之前用Python写了个自动扩容脚本,结果因为时区问题,在夏令时切换那天多扩容了三十台机器,每台机器每小时成本三块七,多烧了十二小时。我们也有类似的坑——去年上季度末,我写了个自动清理日志的脚本,用crontab定时跑,结果某天服务器时间同步出了问题,脚本提前两小时执行,把正在运行的业务日志全删了。那天运营在群里狂@我,说“用户反馈订单记录没了”,我查日志发现脚本的执行时间比平时早了七千二百秒——后来才知道是NTP服务挂了,服务器时间停在了凌晨三点。马斯克说“自动化脚本的可靠度,取决于你对异常场景的覆盖度,而异常场景永远比你想的多”,我现在信了。上周运维小哥写了个自动重启服务的脚本,为了“更可靠”,加了五层判断逻辑,结果因为变量名拼写错误,把生产环境的服务全停了——他当时正在会议室开会,手机震动个不停,出来一看,监控大屏上全是红。 说到开会,那天马斯克在视频里拍桌子,说“你们花在会议上的时间,比写代码的时间还多”。我抬头看了眼会议室墙上的钟,十一点四十七,离午饭还有十三分钟,桌上堆着三份没拆的外卖——行政小妹刚送来的,说“大家先吃饭,吃完继续讨论”。我们正在吵“要不要把Jenkins换成GitLab CI”,A组说“Jenkins用了五年,稳定”,B组说“GitLab CI更现代,支持K8s”。我低头扒拉饭,突然想起马斯克说的“优胜劣汰”——他说技术选型不是选最好的,是选最合适的,而“最合适”的标准只有一个:能不能让团队少加班。我们吵了两个小时,最后决定“先试用GitLab CI,有问题再切回Jenkins”——结果试用了一周,发现需要重构所有构建脚本,又切回去了。那周大家加了三天班,我原以为“技术升级”能提升效率,结果反而更累了。 第三个执念是“所有故障必须根因分析”。马斯克说“有些故障是随机事件,你花一周找根因,不如花一天写个熔断机制”。去年我们遇到个诡异问题:某台服务器偶尔会CPU飙到100%,持续三到五秒,然后自动恢复。运维查了三个月,从内核参数到应用日志,从网络包到磁盘IO,连硬件都换了,还是没找到原因。后来马斯克在群里说“这种情况,直接加限流,别浪费时间”——我们照做了,问题反而没了。现在想想,有些故障就像家里的电灯偶尔闪一下,你非要拆开灯座查线路,可能查到最后发现是小区电压不稳。那天在机房,老张指着监控屏说:“你看这个波动,像不像随机噪声?”我盯着曲线看了五秒,说:“像。”他说:“那还查吗?”我摇摇头:“不查了,加个告警阈值,超过就熔断。”
文章配图,仅供参考 现在每次写自动化脚本,我都会想起马斯克那句话:“技术不是用来炫技的,是用来解决问题的。”上周我重构了一个部署脚本,把原来的二十步操作简化成五步,还加了自动回滚——领导看了说“这不够复杂,显得你没技术含量”。我笑了笑,没说话。复杂的东西容易出问题,简单的东西才可靠。就像那碗黄焖鸡米饭,汤汁渗进手机壳缝里,擦不干净,但不影响打电话——有时候,完美不如够用。(编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

