可观测性入门
概述
说到“可观测性”,不得不说到另一个词“监控”。前者在软件行业流行是最近十年的事,有人说这个概念是“新瓶装旧酒”,那我们具体了解一下二者到底是什么关系。
Google 定义
Google dev官网上有如下的定义说明
监控是可帮助团队观察和了解其系统状态的工具或技术解决方案。监控基于收集一组预定义的指标或日志。
可观测性是可帮助团队有效调试其系统的工具或技术解决方案。可观测性基于对事先未定义的属性和模式的探索。
CNCF的定义
由于可观测性是伴随着云原生流行起来,所以云原生基金会的定义也有极大的参考价值
可观测性是系统本身的一种属性,用来描述从系统的外部输入,理解系统的能力。
综上,不论是“监控”或是“可观测性”都是描述获取系统运行时信息的一种能力。
区别和联系
角色不同
监控是外部系统的一种能力,通常是周期性的询问应用的运行情况;
可观测是系统自身的一种能力,它提供了被其他系统观测、监控的能力;
关注的重点不同
监控的重点是获取数据,发现和管理问题。
可观测性的重点是,利用系统发出有关其内部状态的数据,来确定问题发生的根本原因,帮助解决问题。
以故障管理为例,“监控”的重点在于监视特定的指标,有助于我们回答“何时何地正在发生什么”这个问题;而可观测性的重点在于能够帮助团队在多云环境中了解上下文发生的事情,以检测和解决问题的根本原因,有助于我们回答“何时何地正在发生什么”以及“为什么会发生该事件”这两个问题。因此,可以说,在故障管理角度,相比较于监控,可观测性的价值在于快速排障。
联系
无论从包含的领域还是功能的角度拉说,监控都可以认为是可观测性的子集。
在CNCF的云原生生态中,可观测性被划分在“可观测性与分析”这一类别里。这一类目包含,监控、日志、追踪。
- 监控主要是指对指标Metric、日志事件的统计和分析
- 日志指对运行时日志信息的收集、存储、分析工具
- 追踪指追踪分布式请求的通信过程,是日志记录的一个专门用途
为什么提出了可观测性?
主要是传统监控在云原生时代的局限性
- 此前开发、运维是分离的,监控是运维人员做的,但是DevOps发展,要求开发阶段就考虑到可观测性的能力
- 传统监控不适应弹性,如Zabbix监控支持有限,配置复杂,缺少自动发现
- 互联网以用户为核心,对故障的发现,定位原因,解决故障的能力要求更高
- 监控的实时性要求高,很多监控系统周期性采样,不再适合
- 传统监控更注重基础监控,可观测性更注重Application