在 2018 年,Observability(即可观测性)首次被引入 IT 领域,并逐渐取代只关注系统整体可用性的传统监控。随着云原生技术的不断发展,企业从单体架构发展到分布式架构,使用容器部署拆分出来的一众微服务、与业务联系紧密,传统的监控仅适合报告系统的整体运行情况无法进行高度细化的分析与关联,于是需要将研发视角融入监控,发展具有比原有监控更广泛、更主动、更细粒度的能力,这种能力就是可观测性。
Dubbo 3 的建设规划有上云,可观测性是上云必不可少的能力,集群间根据实例可用性负载均衡、Kubernetes 弹性伸缩、建立实例健康模型等等运用场景都需要可观测性。
目前 Dubbo 3 的可观测性正在建设中,本文主要介绍 Metrics 模块基础知识与进度。
零-APM 介绍
Cloud Native
APM全称是 application performance management,翻译过来就是应用的性能管理,主要是用来管理和监控软件系统的性能和可用性。 可以保障线上服务的质量,是一个重要的服务治理工具。
如果从系统职能上分的话,APM 系统的话可以可以分为三个子系统,分别是 Metrics、Tracing 和 Logging。
Metrics 也叫指标监控,主要是负责处理一些结构化的可以聚合的一些指标数据。
Tracing 又叫链路追踪,主要是围绕单次请求进行信息处理,然后所有的数据都被绑定到系统的单个请求或者说单个事务上。
Logging 是日志监控,主要梳理一些非结构化的事件。
Metrics 结构与类型
Cloud Native
一个 Metrics 由四部分组成,第一个是指标名称;第二个是 labels 或者说 tags 也就是标签,是一些维度数据,这些维度数据可以用来做一些过滤或者聚合查询;第三个是时间戳,就是它的时间字段;第四个就是具体的指标的一个值。
除了上述四个部分之外,还有一个非常重要的字段没有体现在数据模型里,就是这条数据的指标类型。不同的指标类型的话它是会用在不同的监控场景,同时它的一些查询和可视化的一些方式,也会有一些区别。
下面简单介绍一些常用的指标类型。
第一个是 Gague,这个类型的特点就是他是可增可减的。比如说 CPU 负载、活跃线程数、内存使用率、磁盘使用率,这些数它都是会随着时间进行波动的。它存储和展示的都是一个瞬时值。
第二个指标类型 Cou