← Back to Blog

值班不是把人绑在电话旁:把 on-call 制度做好的三层设计

60 阅读 点赞

「又被叫起来了。」凌晨两点半,小林在群里发了一条消息,配了一张手机上十七条告警截图的图。这已经是本周第三次。他所在的团队上线了值班制度三个月,结果值班变成了所有人最害怕的那一周——有人开始装病,有人偷偷把告警静音,有人干脆把手机调成静音放在客厅充电。问题不在于「要不要值班」,值班这件事本身是必要的;问题在于很多人把值班做成了「把人绑在电话旁边」,而不是「让系统在被需要的时候恰好有人接得住」。好的 on-call 制度是有设计感的,它至少有三个层次。

on-call 值班轮盘与时钟,象征值班轮换制度
值班不是把人绑在电话旁,而是让系统在被需要时恰好有人接得住

第一层:把告警变成值得被叫醒的信号

大多数值班痛苦的根源,不在值班这件事本身,而在告警太多、太吵、太假。小林那一周收到的十七条告警里,真正需要人立刻处理的可能只有一条,其余十六条要么是阈值设得太敏感(CPU 用了 80% 就报,但业务毫无异常),要么是已经自愈的抖动,要么是同一个根因重复报了六遍。当信噪比低到这种程度,值班人员的注意力会被反复稀释,最终形成一种危险的麻木——「反正这些告警大多没事」。

所以值班制度的第一层,其实是告警治理,而不是排班表。首先要做的是分级:把告警按「是否需要立刻人工介入」分成 P0 到 P3。P0 是用户已经受影响、必须立刻拉人起来的;P1 是趋势不对、一小时内要关注;P2、P3 完全可以走工单、第二天上班再处理。分级的价值在于,它把「半夜能叫醒人的资格」变成了一种稀缺的东西——只有真正紧急的事才有这个资格。其次要收敛重复告警,同一个服务、同一个根因的抖动要合并成一条,而不是刷屏十七条。最后,每一条会叫醒人的告警,都应该能在文档里找到对应的处理步骤;找不到步骤的告警,要么补文档,要么就该重新评估它是否值得在半夜响。

这一步做完,最直观的变化是值班电话安静了。而当电话安静下来,值班人员对它的信任度就会回升——他重新相信「响了就是真有事」,于是夜里被叫醒时的反应速度反而更快。信噪比本身就是一种资源。

on-call 值班制度三层设计数据可视化
三层设计:告警分级、响应流程、复盘改进

第二层:让响应有流程,而不是靠个人的灵光一现

很多人以为只要找个靠谱的工程师值班就够了,但现实是,再强的工程师在凌晨三点、睡眼惺忪、独自面对一个陌生服务的故障时,也不可能每次都做出最优判断。流程的作用,是把「个人英雄主义」变成「团队可复用的稳定输出」。一个基础的响应流程应该包含四件事:确认、止损、定位、沟通。

确认,是先花三十秒判断告警真假、影响面有多大,而不是一上来就冲进去改配置。止损,是在完全定位根因之前,先用最快的安全手段把用户影响面控制住——回滚、切流、降级、限流,这些手段应该提前准备好,而不是故障时现想。定位,才是真正花时间的部分,但它的前提是「用户已经不再继续受损」。沟通,是很多团队最容易忽略的一环:值班的人不该同时又是对外解释的人,应该有明确的机制让他在处理故障时,有人负责同步进展给相关的业务方和负责人。

把流程写下来并定期演练,还有一个隐藏的好处:它倒逼团队去补那些平时没人愿意碰的「脏活」——回滚脚本能不能一键执行?降级开关在哪里、谁来打?联系人表是不是上个月那个人已经离职了?这些细节平时没人关心,但它们恰好在最需要的时候决定响应是五分钟还是五十分钟。流程不是束缚,它是让每个人在最糟的状态下,依然有路可走。

第三层:让这一周的痛苦,变成下一周的免疫

如果一次值班结束后,除了把告警点掉、写一句「已恢复」之外什么都没有留下,那这次值班就等于白值了——下周同样的事还会再来一次,同样的电话还会在同样的时间响。值班制度的第三层,是把每一次被叫醒都转化成系统的免疫力。

最直接的做法是记录。不要求写得多正式,但要留下三样东西:发生了什么、当时是怎么判断和处理的、下次能不能不叫醒人或者更快解决。当这些记录积累起来,团队就能看见规律:哪类告警总是在重复?哪个环节总是卡住人?哪些故障本可以通过一次自动化彻底消灭?这正是「告警治理」持续的输入,也是响应的流程不断被修正的依据。

更深一层的做法,是让「减少告警」成为一项被认可的工作,而不是「只有写业务功能才算产出」。一个健康的团队里,工程师花时间把一条噪声告警彻底干掉,其价值不亚于上线一个中等功能——因为它换来的是团队所有人在夜里能安稳睡觉的权利。当团队把「让值班越来越轻松」当成一种共同的成就,值班就不再是一种惩罚性的排班,而变成了一次次让系统变得更结实的机会。这才是值班制度真正的意义:它保护的不只是系统,还有人的精力和热情。

赛博朋克风格深夜值班运维工程师桌面场景
每一次被叫醒,都应该变成系统的一次免疫

值班本身没有错,错的是把它做成了「用人力硬扛系统的粗糙」。第一层让告警值得被相信,第二层让响应不依赖运气,第三层让每一次痛苦都变成进步。当一个团队真正把这三层做起来,值过班的人会告诉你:电话响的次数变少了,但每次响起来,大家心里都有底。这种「有底」的感觉,才是工程团队最难得的安全感——它不来自某个人的英雄时刻,而来自一整套被反复打磨、每个普通人都能用的系统性设计。

💬 发表评论