智汇 IT
城启新篇

可观测性团队实战手记

上周三凌晨两点,我在公司楼下的鸭血粉丝汤店蹲到了刚从机房出来的张工。他手里攥着半凉的鸭油酥,电脑屏幕上的告警红得像老板上周批的绩效改进单。

那天他们刚搞完双11的压测,支付接口的超时率飘到了12%,查了三个小时,所有人都快把Grafana的看板翻烂了,连个根因的影子都没摸到。

别把监控当可观测性

说实话,这事我太有共鸣了。

之前我们团队也踩过一模一样的坑。

总觉得埋了Prometheus的指标,配了几十块Grafana的看板,再把ELK的日志搜得飞起,就是做了可观测性。

屁。

可观测性的核心从来不是把数据堆到看板上,而是能从任意一个异常点,顺藤摸瓜找到根因。

监控是啥?是你提前知道CPU会飙高,内存会溢出,然后设个阈值等着告警。但可观测性是你根本不知道下一个坑在哪,甚至连坑在哪一层都摸不清,出了问题能顺着链路摸过去,不用瞎猜。

上次压测的问题,最后是张工拿脚本扒了所有接口的调用耗时,才发现是个没人注意的用户画像同步接口,每次同步的时候会占满数据库的连接池,导致支付接口拿不到连接。

这个接口的CPU、内存指标全正常,日志里也没写”我占满连接池了”,之前的监控根本覆盖不到这个隐性的问题。

分布式链路追踪异常节点标注示意图
分布式链路追踪异常节点标注示意图

你说这是监控没做全吗?也不是。

总不能提前给每个可能出问题的点都设个告警吧?那告警能多到把企业微信炸穿。

我们之前试过。

告警最多的时候,一天能收到两千多条告警,一半都是误报,最后大家直接把告警群设成免打扰,真出了大问题反而没人看见。

落地别贪大求全

后来我们改了思路。

别听那些厂商吹的什么全栈可观测性,上来就让你把所有系统、所有接口都接入探针,光接入就得搞三个月,等你搞完,业务都迭代了八版了。

我们就挑最核心的支付链路搞。

从用户点”提交订单”,到订单生成、风控校验、库存扣减、支付回调,这一整条链路拆成17个节点,每个节点的日志自动带上统一的traceID,指标和链路直接绑定,点开任意一个节点的告警,就能看到它上下游的调用情况、耗时、错误率,连日志都不用单独搜。

核心链路的可观测性覆盖率,比全系统的指标覆盖率重要100倍。

搞完这套东西,也就花了两周。

上次大促的时候,真出了个支付回调超时的问题,告警刚弹出来,开发点进去就看到是回调接口的一个时间戳字段格式错了,导致第三方支付的回调解析失败,从告警触发到修复,总共花了47秒。

张工那天的鸭油酥,终于不用凉着吃了。

电商核心支付链路可观测性节点拓扑图
电商核心支付链路可观测性节点拓扑图

还有个细节,我们没搞那种花里胡哨的大盘。

就给每个开发配了自己负责的链路的看板,不用翻几十块面板找自己的东西。

之前运维每次出问题要挨个看板翻,翻到最后都忘了自己在找啥。现在打开看板,直接就能看到自己负责的那一段的情况,省了超多事。

别让可观测性变成运维的单人活

别让可观测性变成运维的单人活
别让可观测性变成运维的单人活

最开始搞可观测性的时候,全是运维在扛。

开发根本不关心埋点对不对,日志写的啥。

之前有个开发写的错误日志,就一句”接口报错”,连个请求参数、错误码都没有,出了问题根本不知道是啥错,还要运维去找开发对代码,一来一回半小时过去了。

后来我们改了上线评审的规则。

新功能要上线,必须先把对应的链路埋点、日志规范、告警规则配好,才能过评审。日志里必须带traceID、请求参数、错误原因,埋点必须覆盖核心的调用节点,不然直接打回。

可观测性不是运维的专属工具,是每个开发写代码的时候就要刻进骨子里的习惯。

对吧?

你总不能写个漏了参数校验的代码,出了问题还要运维帮你擦屁股吧?

搞了三个月,现在开发出了问题,自己打开看板就能定位,不用再追着运维要数据,省了超多扯皮的时间。

上周我又去那家鸭血粉丝汤店,张工已经把鸭油酥换成了刚出炉的,屏幕上的告警也很少跳红了。

其实哪有什么玄学的技术概念啊。

不过是少点虚头巴脑的东西,多做点能解决实际问题的事而已。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:可观测性团队实战手记
文章链接:https://m.itcdj.com/it/405.html