天天报警值班,老子不干了

巴辉特 2024年3月18日

最近跟一个朋友(化名张三)吃饭,三哥最近想离职,来找我喝酒,说天天 OnCall,出门都带着电脑,连续一年了,要崩溃了。我问:你们组就你一个人么?为啥就你自己 OnCall?三哥一脸苦涩:我们组算上老板 4 个人,老板说另外俩人不靠谱,不让他俩 OnCall,还给我画饼,说 OnCall 能提升我的技术,年底绩效普通,那俩哥们安心干开发,绩效都比我好,TMD 心塞,老子不伺候了。。。下面,据说是三哥接电话告警时的萧瑟背影。。。

Snipaste_2024-03-19_10-22-38

显然,三哥这是遇人不淑了。其实还有一个情况也挺恶心,老板说咱们推行 DevOps 文化,「You build it, you run it, you monitor it」,然后全员 OnCall,老实巴交的人就时时刻刻扛着电脑,不老实的人出了问题从来不管,要是老板问起,就说自己睡着了,或者刚好没信号,或者在洗澡,总之就是各种理由,最终的结局是,全组人不少,只有那个老实巴交的人累的一批,最后离职,然后老板又找个新人,继续这个循环。

其实,这是典型的双输局面:

  • 于这个老实人而言,心情郁闷,最终离职;
  • 于团队而言,明眼人能看到管理水平低下,人员流动大,稳定性差;

真是印证了那句话:

一切问题都是管理的问题。

当然,把问题推到管理上,推到文化上,或者推到创始人个人身上,对于解决当下问题,通常起不到太多直接作用。咱们姑且来看一下作为一二线 leader 应该怎么做,如果你是底层的大头兵,至少可以和直线 leader 做交流,或者最不济的,把文章分享到朋友圈,期待自己的傻 x 老板能看到吧。下面,,上正菜(请各位股民不要介意)。。。

20240319110613

怎么做 OnCall 才不至于把人逼走?

第一、排班轮流干。

这个事,确实谁都不愿意持续干,那就得排班,轮流干,团队共担,中国人的思路就是不患寡而患不均,弄个排班表格,把大家都安排上,当然,还要考虑临时调班、节假日调班,Excel 管理起来稍微费点劲,可以使用一些排班工具,比如 PagerDutyOpsGenieFlashDuty 等等,这些工具都是专业的告警 OnCall 产品,自然都有排班功能,可以自动化排班,支持换班通知、临时调班和节假日调班等功能,可以大大减轻排班管理的负担。

第二、OnCall 的人要有奖励

比如本周我轮班,日薪翻倍,大家的热情一下子就起来了。其实海外很多公司都是这样的,OnCall 的人有专门的奖金,或者是额外的假期,这样大家都愿意轮流干,而不是像三哥那样,一年都没休过假。公司虽然因此付出了一些成本,但是员工效率提升,稳定性提升,而且员工幸福感提升,各位老板都是精明人,理应知道这是双赢的事情。

第三、OnCall 的人不尽责要有惩罚机制

这是建立在奖励机制之上的,奖惩分明,公平公正才是长久之计,只有处罚没有奖励是不行的。比如,OnCall 的人故意不接电话,不处理告警,导致事故,那就要有相应的惩罚措施,比如扣钱,扣绩效,甚至开除。这样一来,大家都会严肃对待 OnCall 这件事,不敢有丝毫的马虎。(制度要公平,广受认可,否则大家心底不服,强压难以落地)

当然,如果真的出现这种情况,告警长时间未得到处理,应该升级到 backup 的同事或直接升级到 leader,保证每个告警都最终被处理。这就需要告警事件的分发平台要支持升级机制,上面提到的 PagerDutyOpsGenieFlashDuty,都支持告警升级机制,可以保证告警不会被漏掉。

第四、OnCall 人员发现的稳定性隐患要高优处理

OnCall 的同事如果发现系统稳定性隐患,要及时上会讨论,确定高优先级处理,这样一来,系统越来越稳定,告警越来越少,OnCall 的人也就越来越轻松。

第五、告警要有统一收敛、降噪的平台支持

比如某个网络故障,咔咔咔上千条告警电话打过来,OnCall 手机都被打爆了,没法正常使用,OnCall 的人会很烦躁,这时候就需要告警平台支持告警的统一收敛、降噪,把相同的告警合并成一条,或者把不重要的告警降噪掉。当然,一般监控系统专注在监控数据采集、存储、可视化分析、告警事件生成,对告警事件的后续收敛、降噪、分发、升级等功能支持的不好,可以考虑自研一个专门的 OnCall 平台,或者使用一些成熟的产品,把人力省出来做更有价值的事情。

第六、OnCall 人员要有完备的 SOP 手册

一般在处理告警的时候,精神都是高度紧张的,容易出错,这时候就需要有完备的 SOP 手册,告诉 OnCall 的人,遇到什么情况,应该怎么处理,这样一来,不仅可以提高处理效率,还可以降低处理错误的概率。当然,如果可以把 SOP 逻辑固化为脚本,那就更好了,告警的时候自动执行脚本即可,不需要人工干预。这就是为啥夜莺有个告警自愈的功能。

每个新模块上线,都要提供一些基本的前置条件:

  • 梳理 SLI 指标,并配置告警规则
  • 梳理 SOP 手册,并做好培训
  • 紧急联系人,一般是模块负责人,如果这个人不想经常被打扰,SLI、SOP 都要做好,否则就是自己找罪受

希望各位老板认真对待 OnCall 这件事,别把老实人逼走了追悔莫及,各位老铁还有其他好的建议不,欢迎留言交流哈。

附录:

公众号没法放置链接,文中的链接统一放到这里:

  • PagerDuty:https://www.pagerduty.com/
  • OpsGenie:https://www.opsgenie.com/
  • FlashDuty:https://flashcat.cloud/product/flashduty/
标签: OnCall
开源版
Flashcat
Flashduty