IT系统为什么需要可观测性?

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 控制领域中,研究可观测性的目的是提供基于系统内部状态(白盒),而非系统外部输出(黑盒)进行控制的理论依据。在IT领域中,简单而言,可观测性就是为复杂IT系统寻求白盒监控能力。其实,无论三大支柱还是快速排障都是管中窥豹,无需争论。最早提出可观测性的是现代控制理论奠基人Rudolf Emil Kalman。曾经的登月计划,以及未来的无人驾驶,都离不开他发明的卡尔曼滤波器。而卡尔曼滤波器,才是最优(美)的观测器。

争论

IT领域中,可观测性(observability)的争论源于2017年Peter Bourgon(Go Kit 作者)的一篇文章《Metrics, tracing, and logging》。文中将可观测性问题映射到了如何处理指标(metrics)、追踪(tracing)、日志(logging)三类数据上。其后,Cindy Sridharan在其著作《Distributed Systems Observability》中,进一步讲到指标、追踪、日志是可观测性的三大支柱(three pillars)。云监控领域的领导者,Datadog也在其网站上用三大支柱来阐述可观测性。

三大支柱流传甚广,很大程度是因为,明确数据类型和优化处理方法,是广大开发者们最易理解的方式。但三大支柱只是讲到了如何实现可观测性,而非为何要采用可观测性。Ben Sigelman (Google Dapper作者)对此即有争论,说这样的定义毫无意义,因为这只是三种数据类型。Charity Majors(Honeycomb CTO)也反对上述说法。她更进一步指出如果说传统监控工具是用来解决“known-unknown”问题(已知问题),那么可观测性是用来解决“unknown-unknown”问题(未知问题)的。

既然标题是为什么需要可观测性,那么实在无需讨论三大支柱相关内容。就新技术采用的决策者来说,为什么需要可观测性比如何实现可观测性更为重要。如果答案仅仅是Charity Majors所说的“unknown-unknown”,则实在有点玄之又玄的感觉了。因此,下文将从可观测性的实际案例分析其价值,尝试说明为什么需要引入可观测技术。

价值

从实用主义出发,理解可观测性解决什么问题,比理解可观测性如何实现更有价值。Google SRE book第十二章给出了简洁明快的答案:快速排障。

There are many ways to simplify and speed troubleshooting. Perhaps the most fundamental are:

Building observability—with both white-box metrics and structured logs—into each component from the ground up
Designing systems with well-understood and observable interfaces between components.

Google SRE Book, Chapter 12

为何快速排障需要可观测性?这是由于IT系统不断增加的复杂度决定的。大量云原生技术的采用,导致IT系统越来越复杂,快速排障变得越来越难。传统的应用监控(APM)和网络监控(NPM)工具,可以发现某个函数调用失败或者某个链路性能下降,却难以在复杂的云环境下找到故障发生的根本原因。

下面通过云杉网络DeepFlow的实战案例说明可观测性的价值:

案例1:“谁动了我的数据库!”
某大型银行,采用私有云基础设施部署微服务架构的应用。随着业务不断上云,经常遇到这样一个棘手问题:核心数据库访问量陡增,只知道来自某个云资源池,却由于其中的80000多个容器POD都做了不止一次的IP地址转换,而无法定位到底是哪些POD造成了核心数据库的流量陡增。

如果采用传统的监控方式,只能发现陡增这个现象,而难以快速定位到引发问题的容器POD。通过可观测性,则可以建立80000多个容器POD到核心数据库每一次访问的性能指标和关联关系,进而在1分钟内定位上述问题,避免由核心数据库带来的业务风险。

案例2:“审批系统每周都出问题!”
某地产公司,将面向全球数万员工的业务审批系统部署在公有云基础设施之上。该系统由30多个微服务构成,并依赖10多个外部系统,应用调用关系复杂,故障定位极其困难。

自从上了公有云,该业务审批系统每周都出现问题。即便尝试了拨测和APM等监控工具,依然没有达到每周99.9%时间可用。通过引入可观测性,一系列问题立即被发现:外包开发团队私自升级代码、某公有云平台DNS服务中断、内部存储微服务丢包达30%以上、3个外部应用错误率超过10%...。云上业务故障的多样性可见一斑。没有全面的可观测性,无法分钟级定位上述问题,自然就不可能达到99.9%(每周最多中断10分钟)的可用性。

案例3:“开发测试环境带来生产隐患!”
某大型金融机构,开发测试和生产系统均构建在两地三中心的私有云基础设施之上。开发测试环境中,新业务的性能出现了“一会儿好一会儿不好”的问题。无论使用云平台自带监控,还是进行人工抓包分析,数周来一直没有找到根因,即无法确定是应用还是基础设施的问题。

如果新业务真的“带病”上生产,一旦发生业务自身问题带来的生产事故,责任是极其重大的。通过引入可观测性,首先精确监测到特定虚拟机每5分钟出现100ms的时延波峰,其次根据特定虚拟机的全栈链路(即虚拟机-云主机-路由器等)实时监测,快速定位出故障在特定云主机到某路由器之间,进而发现路由器配置疏漏导致换路产生,造成周期性丢包。

从以上实战中可以看出来,云原生技术的广泛采用,大大增加了IT系统故障的复杂性,进而为快速排障带来了困难。通过引入可观测性,分布式应用和复杂的基础设施由黑盒变成白盒,有效提高了排障速度。

结语

控制领域中,研究可观测性的目的是提供基于系统内部状态(白盒),而非系统外部输出(黑盒)进行控制的理论依据。在IT领域中,简单而言,可观测性就是为复杂IT系统寻求白盒监控能力。

其实,无论三大支柱还是快速排障都是管中窥豹,无需争论。最早提出可观测性的是现代控制理论奠基人Rudolf Emil Kalman。曾经的登月计划,以及未来的无人驾驶,都离不开他发明的卡尔曼滤波器。而卡尔曼滤波器,才是最优(美)的观测器。

相关文章
|
Ubuntu Linux 开发工具
Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!
Linux超级强大的十六进制dump工具:XXD命令,我教你应该如何使用!
582 0
|
存储 Web App开发 消息中间件
原来10张图就可以搞懂分布式链路追踪系统原理
原来10张图就可以搞懂分布式链路追踪系统原理
原来10张图就可以搞懂分布式链路追踪系统原理
|
2月前
|
JSON API 开发者
淘宝 API 零基础快速上手教程(2025 版)
淘宝API是淘宝开放平台提供的接口,允许开发者获取商品、订单等数据,并实现自动化操作。本文介绍了API基础概念、账号开通流程、权限申请、调用方法及实战示例,适合零基础开发者快速入门并掌握淘宝API的核心使用技巧。
|
7月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力RT-DETR精度提升
RT-DETR改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力RT-DETR精度提升
202 10
RT-DETR改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力RT-DETR精度提升
|
机器学习/深度学习 人工智能 自然语言处理
PGL图学习之图神经网络GNN模型GCN、GAT[系列六]
本次项目讲解了图神经网络的原理并对GCN、GAT实现方式进行讲解,最后基于PGL实现了两个算法在数据集Cora、Pubmed、Citeseer的表现,在引文网络基准测试中达到了与论文同等水平的指标。 目前的数据集样本节点和边都不是很大,下个项目将会讲解面对亿级别图应该如何去做。
|
11月前
|
机器学习/深度学习 自然语言处理 算法
自然语言处理 (NLP) 的 5 个步骤
自然语言处理 (NLP) 的 5 个步骤
自然语言处理 (NLP) 的 5 个步骤
|
区块链 Python
9-18|图片上生成字体设置字体大小
9-18|图片上生成字体设置字体大小
|
数据可视化 算法 大数据
深入解析高斯过程:数学理论、重要概念和直观可视化全解
这篇文章探讨了高斯过程作为解决小数据问题的工具,介绍了多元高斯分布的基础和其边缘及条件分布的性质。文章通过线性回归与维度诅咒的问题引出高斯过程,展示如何使用高斯过程克服参数爆炸的问题。作者通过数学公式和可视化解释了高斯过程的理论,并使用Python的GPy库展示了在一维和多维数据上的高斯过程回归应用。高斯过程在数据稀疏时提供了一种有效的方法,但计算成本限制了其在大数据集上的应用。
806 1
|
Ubuntu Linux 数据安全/隐私保护
Linux系统使用Docker部署Cloudreve云盘并实现远程访问
Linux系统使用Docker部署Cloudreve云盘并实现远程访问
277 0
|
人工智能 安全 数据安全/隐私保护
基于Flask框架实现一个简易后台用户登录系统
基于Flask框架实现一个简易后台用户登录系统
257 0