过去一年,可观测性相关的技能得到了大量的重视,Gartner 也将可观测性列为了2023年十大战略技能趋势。那么到底什么是可观测性?可观测性与传统的监控有什么差异?怎么饯别一个优异的事务可观测性实践?以及一个优异的可观测性渠道应该具有哪些才能?本文将从详细的事务场景动身,对可观测性的落地实践做一些深入的介绍,期望能给可观测性领域落地带来必定的启发。

什么是监控?

在回答这个问题之前,先来回想一下咱们的体系运用监控的方法。当咱们体系要接入监控时,第一步会运用各式各样的监控体系搜集咱们需要重视的方针和日志,然后装备上对应的仪表盘进行展现或检索,关于比较中心的方针还会设置告警,当体系发生告警时运维开发人员介入处理对应的反常。 以一个详细的案例来进行阐明:一个简略的单体运用的架构如下图所示,这种架构服务之间的依赖联系十分简略,咱们只需要重视后端服务的运行方针即可把握整个体系的作业状况,后端服务呈现超时或许不行用时,咱们只需要检查后端服务负载方针基本上就能处理问题,就算后端服务没有反常,因为依赖的上下游十分简略,只需要稍微排查一些相关体系的负载状况问题基本上就能很好的处理了。

可观测性与监控的区别及实践分享
在构建这个监控的进程中,咱们体系会搜集哪些方针,哪些方针能体现咱们体系的状况,这些条件都是已知的。这意味着咱们先有方针,然后再运用详细的监控体系。这个阶段咱们重点重视的监控掩盖率,当咱们体系呈现毛病时,监控方针是否都有掩盖。简而言之,监控的方针便是希望可以发现体系反常,咱们要知道【采什么?看什么?告什么?】

什么是可观测性?

随着云原生和微服务的理念不断推广和落地,传统的单体运用开始变得复杂,单体运用的功能被拆分到多个服务中,咱们上面的单体运用架构开始变得复杂起来,原来的单体运用或许会被拆分红网关、认证、注册等多个服务,一些耗时的任务或许也会引进MQ体系,体系的一个恳求会流通到多个服务上进行处理,体系中的各个模块之间会彼此进行影响。此时,假如依照上面的传统的监控思路对体系毛病进行办理时,就会发现很容易碰到瓶颈。

可观测性与监控的区别及实践分享
以一个实际的比方来进行阐明:告警通知体系中的某个服务CPU运用率忽然升高体系发生了中止,需要定位详细的原因。经过上图可知,体系中各个服务之间都有交互依赖联系,假如咱们只运用监控的话,只能知道是哪个服务反常了,但是详细是什么原因导致的,以及怎样处理这个反常,监控就显得无能为力了。主要原因是,在监控的场景下体系是一个黑盒,咱们主要重视的是方针或日志,监控关于为什么体系不行用给不出详细的答案,运维收到告警后,还需要进一步剖析体系的上下游服务的日志或方针来定位问题。 在这种监控场景下,咱们的方针是想知道为什么咱们体系呈现了反常,而不是只需要知道咱们体系呈现了反常。简而言之,可观测性要处理的是【随时随地把握体系当时运行状况】。

监控和可观测性差异

经过上面的详细描绘,咱们不难发现监控是告知咱们体系哪部分是作业的,而可观测性可以告知咱们那里为什么不作业了。

  • 监控是可观测性的一个子集,监控重视的是体系的失利要素,然后界说体系的失利模型。它的中心是运维,是监控设备,监控是站在局外人的角度,去审视体系的运行状况。
  • 可观测性除了重视失利之外,其中心是研制,是详细的运用,是对体系的一种自我审视,是站在创造者的角度去探索体系应该怎么恰当的展现自我的状况。 由此可见,监控是由外到内的进程,可观测性是从内到外的进程,可观测性并不是新生物,而是一种观念的创新。

怎么饯别事务可观测性实践?

可观测性这种观念上的创新,可以更好的帮助咱们对体系进行审计,检查和整理咱们体系终究发生了什么?什么时间发生?以及发生的原因。关于企业来说,饯别事务可观测性的首要方针便是要下降MTTR(均匀修正时间),长时间的毛病会极大的消磨用户口碑,下降用户体验然后影响咱们的事务方针。除此之外,可观测性除了帮助咱们更好的排查毛病,基于可观测性数据处理实际问题,也可以影响咱们产品决策然后改动产品,这才是咱们饯别可观测性的最终方针。 下图是咱们剖析定位问题的典型链路,关于事务来说,饯别可观测性便是要具有下图上面的完好的才能,主要包括两部分:

可观测性与监控的区别及实践分享
搜集数据: 可观测性可以很好的反应咱们体系的内部运行状况,杰出的可观测性第一步是要搜集体系运行的数据,这些数据大致可以分为四类:

  • Metric:方针数据,典型的方针有恳求量、恳求耗时、恳求成功/失利计算、事务自界说方针等;
  • Tracing:分布式追踪数据,用来跟踪用户恳求行为,可以清晰的反映用户恳求在咱们分布式体系中的流通进程;
  • Logging:日志数据,记载体系运行进程中的详细信息;
  • Profile:性能数据,比方CPU火焰图、内存火焰图等,帮助排查体系性能问题;

剖析数据: 搜集可观测性数据后,关于可观测性数据的剖析才能是至关重要的,以实际的比方来说,咱们服务部署在kubernetes集群中,在搜集了四类可观测性数据后,是否具有齐备的相关剖析才能,当体系的服务方针呈现反常时,咱们能否定位到详细是哪个pod、container、host,以及主机上的网络状况怎么。咱们实际定位问题时,依照上图的链路会经常跳转到几个体系之间,咱们还需要打通方针、调用链、日志、Profile之间的相相关系,便利咱们在一个平面上定位问题。

怎么构建优异的可观测性渠道?

从饯别事务可观测性实践来看,一个优异的可观测性渠道应该具有以下才能:

  • 丰富的数据搜集才能: 可以具有搜集Metric、Tracing、Logging、Profile数据;
  • 接入简略无侵入式: 支撑言语丰富,供给杰出的接入指引,关于动态言语供给无侵入的接入方法;
  • 齐备的数据相关才能: 建立杰出的可观测性数据模型(比方host、pod_name、service_name),一致元数据,可以在一个平面上相关所有可观测性数据;
  • 优异的仪表板才能: 支撑各类仪表板,服务拓扑图、火焰图等可视化才能;
  • 场景掩盖全面: 掩盖从客户端、服务端到基础设备所有场景;

参考资料

  • 云原生可观测性之案例实践共享
  • 可观测与监控的差异
  • 一文带你走进《可观测性》
  • Monitoring and Oberservability