可观测性(Observability)一词最早出现在控制论领域,有着几十年的历史。随着云原生时代的到来,2018年,CNCF率先将可观测性一词引入IT领域,并称可观测性是云原生时代必须具备的能力。自此,“可观测性”逐渐取代“监控”,成为云原生技术领域最热门的话题之一。
本文将从四个问题出发,来对监控与可观测性这两个概念略作浅显地对比分析。
一、什么是监控和可观测性
监控(Monitoring):收集、分析和使用信息来观察一段时间内的运行进度,并且进行相应的决策管理的过程,监控侧重于观察特定指标。
可观测性(Observability):通过分析系统生成的数据理解推演出系统内部的状态。
Gartner 将可观测性定义为软件和系统的一种特性,它允许管理员收集有关系统的外部和内部状态数据,以便他们回答有关其行为的问题。然后,I&O、DevOps、SRE、Support等团队可以利用这些数据来调查异常情况,参与可观察性驱动的开发,并提高系统性能和正常运行时间。虽然可观察性处于早期阶段,截至 2020 年只有不到 10% 的企业采用它,但 Gartner 预测,到 2024 年,30% 的基于云架构的公司将采用可观察性技术。
OpenTelemetry组织提出了可观测性依赖的三大“支柱”:
日志:记录了特定时间发生的各种离散事件的信息,用于检测应用程序或者系统中无法预知的行为。
指标:根据随时间变化的数据,大致可以分为三类数据:
(1)基本指标度量:测量特定时间点的值
(2)增量指标度量:当前测量值与历史测量值之间的差异
(3)累计指标度量:计算在随时间变化下指标的累计值
追踪:请求通过分布式系统从端到端的过程。
这三大支柱密不可分,从发现指标异常,到指标关联分析,从逐层下钻到明细trace追踪和具体的错误日志,进而实现全链路自动化根因定位。
因此,可观测性往往能够回答以下几个问题:
性能瓶颈有哪些
请求需要接受的服务有哪些
请求执行过程与系统行为之间的差异性
请求失败的原因
每一个微服务将如何处理请求
什么?没听明白?
简单来说,监控和可观测性就好像是一个父亲和一双儿女的日常相处。
对话中,当父亲来看儿子时,儿子并没有告诉他父亲他具体在做什么。因此除非爸爸经常来检查,否则没有办法知道儿子是不是在认真做作业。同样地,即使父亲专门问儿子,儿子也不会回应父亲。那么作为父亲,他必须不间断地停下手中正在忙的工作,走到儿子身边去检查他正在干什么。
因此,由于儿子不是“可观察的”,图中的爸爸不得不每隔几分钟去“监控”儿子在哪里以及正在做什么。
相比于儿子,图中的女儿非常懂事,会不断地向父亲更新她在哪里,她正在做什么,因此作为父亲,永远不必担心不知道女儿的状态。同时,如果父亲希望知道更详细的细节(如图中在做什么作业),女儿也会做出回答。可以说,这位女儿是家长心目中的孩子啦。
因此,可以说“可观测性”是女儿与生俱来的品质,她通过向父亲发送自己当前的状态并回复父亲有关她状态的查询,使自己“可观测”。
二、监控和可观测性哪个更好呢?
在计算机的发展过程中,监控的概念先于可观测性存在。那么为什么会在已经有了“监控”的概念的情况下,还会出现“可观测性”?
现有的监控工具无法适应云环境,对于应用程序和服务的性能问题会如何影响客户的体现感以及业务KPI没有提供有意义的信息;
现有的监控工具虽然能够标记问题场景,但这些场景在负载波动的情况下往往无法伸缩或者自我调整;
当前,云原生架构在国内的逐步落地,带来了一系列的变化:业务系统逐渐庞大、网络链路逐渐复杂、运行环境动态化程度越来越高。在这样纷繁复杂的环境中,仅凭借监控是无法进行问题的追踪溯源的。
传统的监控,无法适应现代软件系统,其技术和工具很难跟踪当前的分布式架构中的许多通信路径和相互依赖关系。
现代的可观测性,可以更好地控制复杂系统。随着微服务架构的普及,稳定性职责将分布在整个软件生命周期涉及的多团队之间。
基于以上背景,可观测性这一概念被引入,因此可以说可观测性是在监控的基础上做了更深、更广的发展。以众所周知的冰山模型为例,监控和可观测性也同样适用,冰山之上是外在,易于被测量和了解,这就是监控,而冰山之下不会受外界影响,内在为主,指代的就是可观测性。
三、监控和可观测性的区别?
事实上,如果我们可以从积极地观察一个单一的度量标准,来判断哪些变化表明存在问题——那么这就是监控。但如果一个系统发出有关其内部状态的有用数据,那么它就具有可观测性,这在确定根因时是至关重要的。
从性能上看,监控和可观测性之间的区别可从以下四个方面进行区分:
以故障管理为例,“监控”的重点在于监视特定的指标,有助于我们回答“何时何地正在发生什么”这个问题;而可观测性的重点在于能够帮助团队在多云环境中了解上下文发生的事情,以检测和解决问题的根本原因,有助于我们回答“何时何地正在发生什么”以及“为什么会发生该事件”这两个问题。因此,可以说,在故障管理角度,相比较于监控,可观测性的价值在于快速排障。
四、监控和可观测性的联系?
监控能够检测到系统中的错误,可以说是外部对业务应用系统的主动行为,而可观测性能够理解问题发生的原因,也就是说在增添了业务应用系统自身的要求的同时,还建立应用运行时产生的数据之间的关联。
故而,从某个意义上来说,监控是可观测性的子集和功能,可观测性是监控的超集和延展。换句话而言,一个系统只有在可观测的情况下才能被监控。
有没有一种自动和智能的可观测性方法?
DataBuff 一体化软件智能方案可自动收集和分析高度可扩展的数据,以了解庞大的多云环境。DataBuff 率先发布的的内生AIOps引擎,提供因果 AI 引擎能够筛选大量不同的高速数据流,并通过统一的界面对其进行分析。这种单一的事实来源打破了传统竖井工具、竖井团队的信息孤岛,原来的竖井式团队在许多不同的应用程序组件上执行许多不同的功能。
CIO之家 www.ciozj.com 公众号:imciow