本文来自twt企业IT社区,作者/郑金辉。
可观测性是2022年最热的IT话题之一。本文带你了解可观测性的意义、可观测性与监控以及智慧运维关系。
一、什么是可观测性
从去年下半年开始一直到现在,在IT运维领域有一个词一直热度不减,甚至一度超过了当初的AIOps,那就是“可观测性”。可观测性(Observability)本来是一个自动控制领域的一个术语,在控制论中,可观测性是指系统可以由其外部输出,来推断其内部状态的程度,系统的可观测性越强,我们对系统的可控制性就越强。2018年CNCF把这个概念引入了IT运维领域,称其是云原生时代最重要的系统能力。这个观点虽然跟CNCF的定位有关,但也绝不是危言耸听,至少可观测性是2022年最热的IT话题之一。
可观测性的核心是什么,其实就是度量,度量你的从基础设施、平台、应用、数据和业务,了解他们是如何运行的,系统状态从黑盒专向白盒。
二、为何需要可观测性
管理学大师彼得德鲁克曾经说过“你如果无法度量它,就无法管理它”(“If you can’t measure it,you can’t manage it”)。要想有效管理,就难以绕开度量的问题。
IT也是一样,近些年IT架构和技术栈发生了非常大的变化,新技术的应用以前所未有的速度吞噬着传统IT势力。随着容器、微服务、中台的迅速流行,使得系统间的访问越来越复杂,在云内、云间可能会运数千个进程和服务,服务的调用用传统的点对点和点对多点演变成网状,使用传统的监控技术和手段很难跟踪这些分布式架构中的数据流、调用链和相互依赖关系,系统内部的可见性就变得非常重要。
可观测性工具和系统可以有效的帮助运维团队实现对复杂系统的监测和控制,协助团队有效的从纷繁复杂的原始监控数据中,找到线路,追溯到故障原因,进行有效的根因分析。
三、可观测性与监控的关系
1、可观测性概念分析
我们谈可观测性这个概念,更多的是站在管理者的视角在看问题,如果管理者可以轻易的从可观工具上得到想要的数据和答案,没有阻力和没有困惑,这就是我们满意的可观测性。比如我们想看了解基础设施的状态,我们有仪表盘。我们想看查看系统延迟的原因,我们有服务调用链追踪。我们的需求都可以被各种不同的工具满足。
但是系统原来越复杂,管理者和被管理对象都发生了很大变化,原有的可观测工具不再满足日益增长的需求,于是我们建立了越来越多的工具竖井,我们的运维系统和IT监控重新陷入了混乱。
我们在这种“一乱一治”中消耗着我们的热情和成本。
现在正在被热捧的可观测性,把上面的那些竖井和柱子整合了三大要素,日志(Log)、指标(Metric)和追踪(Trace)。
1)日志:记录了特定时间发生的各种离散事件的信息,用于检测系统中无法预知的行为。
2)指标:指标是根据随时间变化的数据,是在⼀段时间内测量的数值。与⽇志不同,指标在默认情况下是结构化的,这使得查询和优化存储变得更加容易,让您能够将它们保留更⻓时间。
3)追踪:请求通过分布式系统从端到端的过程。
这三大支柱密不可分,从发现指标异常,到指标关联分析,从逐层下钻到明细trace追踪和具体的错误日志,进而实现全链路自动化根因定位。可观测性有核心是检测、排障和分析,检测是依据是Metric,排障的依据Trace,分析的依据是Log。
以上三大要素不是我杜撰的,是CNCF在OpenTelemetry开源项目中正式提出的。OpenTelemetry是CNCF的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方vendor无关的服务。
2、可观测性跟监控的关系
从上面的分析可以看出来,可观测性跟监控有着密不可分的关系。监控的概念比可观测性要更早,有了监控为什么还需要客观性呢?
现有的监控工具无法适应云环境,只能标记问题,无法自动调整,对问题和故障也是无法追踪溯源。传统的监控工具无法适应现在和未来的软件架构和软件系统,其技术和工具很难跟踪当前的分布式架构中的许多通信路径和相互依赖关系。可观测性可以更好地控制复杂系统,可以更好的通过可观测性控制系统的稳定性。因此可以说可观测性是在监控的基础上做了更深、更广的发展。
从故障管理的角度来说,监控更关注特点的指标,能够回答什么时候什么地方正在发生什么;可观测性通过三个指标的融合和分析判断,重点在于根因分析和协助排障,不仅能回答监控的问题,还能回答为什么会发生。
监控更关注基于指标的告警和状态概况;而可观测性,除了这些以外,还关注故障排除、根因分析和趋势预测。从这个角度说,监控是可观测性的子集和功能,可观测性是监控的超集和延展。换句话而言,一个系统只有在可观测的情况下才能被监控。
四、可观测性是智慧运维的重要思路和方向
三大要素是可观测性的重要组成部分,但不是全部,除此之外可观测性还依赖于其他一些能力,公认的有SRE方法论和AIOps,此外还有不少声音认为应该加上业务,也就是对业务的理解和相关知识,我更赞成后者。
SRE方法论很容易理解,Google这一方法论对运维的统制地位是大家公认的,至于SLO方法如何指导运维和智慧运维层面落地,不用在这里细说。
AIOps在这里指的是狭义的概念,说的是智慧运维分析,针对Metric、Trace和Log等数据,利用AI的手段,进行建模分析,用专门的算法来应对支持。
除了这个另个核心能力以外,对业务的理解以及业务架构,也是可观测性的核心和关键。不同的业务,需要设定不同的业务指标,业务指标如何分解成系统的里面的各种参数,这是业务的范畴。同样,复杂的调用关系只有用业务的语言才能解释。
对业务场景及业务架构的理解程度,决定了SRE和AIOps可以发挥的效果如何,也最终决定了落地的效果。
大家可能会有疑问,为啥之前没人提可观测性,技术的应用和落地到了一定程度,自然需要更高的应用和业务诉求去指引,这样的信息化才能不断的向数字化和智能化发展。