差不多在五年前,分布式系统已经成熟,微服务架构尚未普及,可观测问题就已经在桎梏技术团队的工作效率。
一个To C的软件使用问题可能由客服发起,整条支撑链路的所有技术部门,都要逐一排查接口和日志,流程非常原始,也非常低效。
如果业务到达一个量级,支撑系统变多,两名研发查上两三个星期也是常事。
微服务架构普及后,问题变得更加严峻。一个服务被拆分成数个黑盒的、虚拟的微服务,故障排除彻底成为一种折磨。
我们通过三种方式做到这一点:跟踪、日志和指标。前者产生更多的数据,但不一定更多的洞察力。如今,这些技术都有望接近实时。
构建一个所谓的可观测性系统有三个要素:
一、要有数据;
二、背后有一个强大的异构能力的数据引擎;
三、需要有高效的查询。
最直接经济的方案是看现在的情况是什么样的,哪些需要采购商业化的产品,哪些选择开源项目或者自研,最终对整体进行拼凑,这种方式会高效一些。
缺乏可观测性就像闭着眼睛开车:你不知道离灾难有多近。你开得越快,路越忙,你就越要小心。
可观测性也是一样:你越想让你的团队越快地添加功能,你就越应该在可观测性上投资。而且,虽然在可观测性上节省一些钱可能很诱人,但这些节省将在下一次缓慢修复事件中迅速消失。