TL;DR
Gartner将应用可观测性列为2023年重要战略趋势之一。
作为开发者, 即便没有专精此道。但了解一下,还是有必要的。
前言
最近,我所在的产品组,将完善监控系统,放入了版本规划中。
趁此良机,了解了一波可观测性相关的背景和技术。
同时,对原有的监控方式,进行了一定的改造。
可观测性
控制理论中的可观察性(observability)是指系统可以由其外部输出推断其其内部状态的程度。系统的可观察性和可控制性是数学上对偶的概念。可观察性最早是匈牙利裔工程师鲁道夫·卡尔曼针对线性动态系统提出的概念[1][2]。若以信号流图来看,若所有的内部状态都可以输出到输出信号,此系统即有可观察性。
什么是可观测性?
可观测性是指能够通过检查系统或应用的输出、日志和性能指标来监控、测量和理解系统或应用的状态。
讲人话,我理解就是将传统监控系统的日志,进行了标准化、体系化。同时,将原来“孤岛式”的日志进行了“关联”。将所有日志组合成整体,以此来分析系统状态。
为什么会出现?或者说,为什么现在火了?
监控系统并不是什么稀罕事务,但为什么之前没有什么热度呢?
我认为,是排查问题的门槛,变高了。变高的原因,主要有2方面:
- 系统复杂度
- 数据量
系统复杂度
首先,是系统的复杂度在不断上升。单机软件、集群部署、云服务、虚拟化。
软件部署方式的每一次升级,都在提升软件系统的整体能力。
与此同时,一旦出现问题,排查&解决问题的难度,也在不断上升。如果身边有运维同学,可以听他们讲一讲,独属于他们的、深夜里的故事🤣
数据量
从计算机诞生,我们已经经历了单机软件、局域网、互联网,且身处移动互联网。
在网络高度普及的今天,软件和服务,包裹着每一个网民。网络触手的延伸,在提供了高度便利的同时,也给数据量带来了井喷式的增长。这给问题排查,增加了不小的难度。
当下,我们身处移动互联网的上半场,当摄像头、家用电器、车载系统和新基建中无处不在的传感器入网后,在移动互联网的下半场(IoT),数据量的暴增,是可以预见的。
所以,传统监控系统相对片面、局部的监控指标,无法满足复杂环境下的系统状态监控、问题排查和系统调优。
怎么用?
Opentelemetry、Prometheus、Grafana、Jaeger等等。现在已经有很多成熟的开源工具可供集成、或二次定制开发。也有不少收费的平台,方便使用。
通过这些可观测性工具,可以
- 更加全面的监控系统指标
- 更清晰的分析调用链条
- 更准确、更有把握的的优化系统瓶颈点
这些不是空口白话,我们产品在初步集成Jaeger后,已经发现了几处有价值的隐藏问题。这在原来,只能通过大规模的压力测试(如果有)、客户现场反馈来发现、修复。
后边有机会(如果不鸽),会分享一些脱敏的相关实践。
一点想法
这周,集成进系统的Jaeger基本可用了。通过和后端师傅的交流,发现了几处隐藏的问题,挺开心的。
虽然有些马后炮了,但在毕业不久的时候,就有对完善的监控体系的期待了。可惜,当时虽然有考虑过监控系统的雏形,但只停留在想象中了。现实里的时间,都去打游戏了。。。
总之,Observability相关的技术, 不是颠覆传统监控系统的银弹。
在我看来,更像是应运而生。是对传统监控体系的完善、补充和升级。