智汇 IT
城启新篇

可观测性从来不是买套工具就完事

去年双11前我去杭州找老同事蹭饭,他们团队做自营电商的,正卡在大促前的最后一轮压测上。

接口突然崩了。

三个小时,运维翻了几万行日志,开发把每个服务的代码都过了一遍,最后才发现是新上的库存服务连接池参数没配,把数据库的可用连接全占满了。

他们有监控的。Grafana大盘上CPU、内存、磁盘曲线飘的整整齐齐,ELK集群存了半个月的日志,甚至还买了商用的链路追踪服务。

没用。

你以为的监控和真的可观测性根本不是一回事

很多人对可观测性的认知,还停留在“把系统的运行数据都采集上来”的阶段。但可观测性的核心是你能在不提前写代码埋点的前提下,回答系统出现的未知问题。

就像刚才那个电商团队,他们的监控只能回答“数据库当前连接数是不是满了”这种已经提前想过的问题。但当连接数真的满了的时候,他们没法立刻回答“是哪个服务、哪个请求占了这些连接”——所有的数据都是割裂的,指标归指标,日志归日志,链路归链路,没有关联。

分布式系统链路追踪调用链示意图
分布式系统链路追踪调用链示意图

说真的,我见过太多团队踩这个坑。

他们花几十万买了所谓的一体化可观测平台,把所有的指标、日志、链路数据都堆在一个大盘上,看起来花团锦簇,真到出问题的时候,还是要运维拿着命令行挨个机器翻日志,找半天定位不到根因。

白花钱。

别上来就买工具先理清楚你要回答什么问题

之前接触过一个做生鲜配送的团队,刚上可观测性的时候走了大弯路。

什么数据都采。

光业务指标每天就存几十T,查询慢的要死,打开一个大盘要等半分钟,最后没人愿意用,成了摆设。后来他们干脆把平台停了,拉着开发、运维、仓管、配送的人开了一下午会,就聊一个事:过去三个月,线上出的最头疼的三个问题是什么?

列出来的三个问题特别具体:第一,配送员端提交订单经常超时,不知道是网关卡了还是配送服务出问题;第二,库存扣减有时候对不上,不知道是并发冲突还是消息丢了;第三,用户付完款没收到确认短信,不知道是短信服务挂了还是MQ消息没发出去。

他们就针对这三个问题,调整了埋点逻辑,把每个环节的耗时、错误率、关联日志全部绑定到同一个请求链路上。最后问题定位时间从原来的40分钟,降到了5分钟。

没有业务上下文的可观测数据,本质上就是占存储的垃圾。

生鲜配送系统订单链路追踪数据面板
生鲜配送系统订单链路追踪数据面板

当然不是说那些商业化的可观测平台不好,只是你得先想清楚你要解决什么问题,再去匹配工具,而不是反过来。

落地可观测性最容易被忽略的团队协作问题

我见过至少一半的团队,推可观测性推不下去,根本不是工具的问题,是人的问题。

最常见的场景就是,SRE团队写了厚厚的一本埋点规范,扔给开发团队,要求大家按规范埋点,不埋就扣绩效。结果呢?开发本来就要赶业务需求,哪有空仔细研究规范?埋的点要么漏了,要么参数错了,链路断的七零八落,最后平台上的数据根本不能用。

别搞道德绑架。

后来那个生鲜团队换了个思路。他们把埋点SDK做的尽量无感——只要用团队封装好的HTTP客户端和数据库驱动,自动就会把trace id透传下去,不用开发写一行额外的代码。甚至连日志里的trace id,都用日志框架的拦截器自动加上。

这下大家都愿意用了。

谁也不想出了问题还要背锅对吧?之前开发要花两个小时复现线上问题,现在只要在平台上搜对应的trace id,请求经过的每个接口的参数、堆栈、耗时全在,五分钟就能定位是自己写的哪段代码出了问题。可观测性做好了,是给开发减负的,不是加活。

上周和那个电商的朋友吃饭,他们现在大促压测,只要链路里哪个环节的错误率超过0.1%,直接能跳出来是哪个服务的哪个实例出的问题,再也不用全员熬夜翻日志了。

挺好。

本来技术就是用来给人省事的,对吧?

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:可观测性从来不是买套工具就完事
文章链接:https://m.itcdj.com/news/702.html