专业书籍精读 · SRE · 第 6 章

监控分布式系统:处置是机械的,它就不该叫醒人

Site Reliability Engineering · Ch 6 · Google(Rob Ewaschuk)· 2016

EN →

这一章讲什么?

你半夜下单付款失败,第二天它又好了——中间多半有个人被电话叫醒过。这一章讲的就是那通电话该在什么时候打:一套线上服务要盯哪些数、什么情况算「坏了」、什么情况值得把一个大活人从床上拽起来。

先打个比方

把它想成家里的烟雾报警器。你会装几个?装一个,厨房着火时它响,你信它。装二十个、还调得极其灵敏,那么每次炒个菜、洗个热水澡它都叫——不出一个月,你就会把电池全抠掉。到那天,真着火了也没人管。这一章从头到尾在防的就是这个结局:报警器多到没人信,比没有报警器更危险。

先说个怪事

大多数人以为这活的方向是「越聪明越好」——最好有个系统自动看出「哪里坏了、为什么坏」,人只管等结论。Google 说他们试过,然后主动放弃了。理由很朴素:越聪明的系统内部越绕,真出事的时候,你得先花半小时搞清楚它为什么这么说,而你本来只有五分钟。他们最后选了个听上去很没出息的方向——又笨又快

核心的点子:只盯四件事

一套服务能量的东西成千上万,真正该一直盯着的只有四件,就像看一家餐厅只需要看:上菜要等多久今天来了多少客人上错了多少盘后厨还剩多少余地。前三件说的是「现在怎么样」,第四件是唯一能提前报信的——后厨快转不动了,你还来得及加人;等菜真端不出来就晚了。

这里有个特别容易栽的坑:算「上菜多久」时,要把上错的单子单独算。因为店一崩,它拒绝接单是很快的——「对不起做不了」两秒就能说完。混在一起算,数字反而显示今天上菜特别快:看着一片大好,其实店已经塌了。

第二个点子:叫人的门槛

知道哪里不对,和把人叫醒,是两件事。这章给的门槛几乎苛刻:能把人从床上叫起来的事,必须同时满足三条——真的急、真的有事可做、而且非得靠人的判断不可。最后那条最狠:如果你被叫醒之后的全部动作,就是照着一张纸点几下,那这件事根本不该叫人,应该让机器去点。人被叫醒是因为需要一个脑子,不是需要一双手。

顺着这条门槛,事情自然分三档:需要现在就有人来的,打电话;需要人做但不急的,开张单子几天内办掉;谁也不用看的,写进日志躺着——真出事那天,它是唯一能还原现场的东西。

诚实的代价:这套做法会让你在故障刚起时知道「坏了」,却一时说不清「哪坏了」——所以内部的详细数据一个都不能少,只是不许它们打电话叫人。

一句话记住

盯四件事就够:多慢、多忙、错多少、多满(只有最后一件能提前报信)。而叫醒一个人的门槛是:急、有事可做、且非人不可——凡是照着流程点几下就完事的,交给机器。报警器一多,人就不信了,这比没有报警器更糟。

想进到具体机制、数字和示意图? → 切到精读版