2月5-7日QCon全球软件开发大会携手100+位大咖讲师落定北京,点击查看完整日程>> 了解详情
写点什么

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

  • 2022-01-14
  • 本文字数:2464 字

    阅读完需:约 8 分钟

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

争论


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)工具,可以发现某个函数调用失败或者某个链路性能下降,却难以在复杂的云环境下找到故障发生的根本原因。下面通过几个典型的实战案例说明可观测性的价值:


案例 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 系统故障的复杂性,进而为快速排障带来了困难。通过引入可观测性,分布式应用和复杂的基础设施由黑盒变成白盒,有效提高了排障速度。

 

可观测性如何实现更多不同业务场景下的快速排障?每一个云原生应用如何具备可观测性能力?如何搭建一套适合自身的可观测性设施?我们能否让基础设施内生地提供这样的能力,让它就像原力(The Force)一样,无处不在?


2022 年,云杉网络推出“原力释放云原生可观测性分享会”,将在云原生可观测性趋势、云原生热门技术、开源生态、实践案例等方面带来主题分享,以期为企业、技术团队提供可参考的创新实践,帮助企业更顺畅地走上云原生之旅。1 月 19 日晚 8 点将由云杉网络 CEO 亓亚烜带来《IT 系统为什么需要可观测性》主题分享。



如果你对云原生可观测性有一些思考及问题,可将内容填写在下方文档中,我们将在活动过程中与大家共同讨论。


互动文档https://kdocs.cn/l/ctWPQvVy0Qp4

结语


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


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

2022-01-14 10:194258

评论

发布
暂无评论
发现更多内容

袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座

袋鼠云数栈DTinsight

数据中台 数据仓库 数据湖 数据中台场景实践 数据湖分析

聊聊Mybatis的类型转换的别名管理

周杰伦本人

11月月更

商业智能BI工具如何选择?公司方面需学习具体方法

流量猫猫头

大数据

【11.18-11.25】写作社区优秀技术博文回顾

InfoQ写作社区官方

热门活动

信创产业多点开花,AntDB数据库积极参与行业标准研制,协同价值链伙伴共促新发展

亚信AntDB数据库

AntDB aisware antdb AntDB数据库

DAPP上链公排智能合约系统开发(搭建)

l8l259l3365

云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅

华为云开发者联盟

云计算 后端 华为云

多点DMALL × Apache Kyuubi:构建统一SQL Proxy探索实践

网易数帆

hadoop spark 开源 Apache Kyuubi

Maven坐标查找方法及Maven-Search 插件的使用(保姆级教学)

几分醉意.

Java 编程 11月月更

流程编排、如此简单-通用流程编排组件JDEasyFlow介绍

京东科技开发者

数据库 架构 服务端 流程引擎 流程编排

自制操作系统日记(8):变量显示

操作系统

基于 RocketMQ 的 Dubbo-go 通信新范式

Apache RocketMQ

RocketMQ RPC dubbo-go dubbogo

OceanBase 4.0 解读:分布式查询性能提升,我们是如何思考的?

OceanBase 数据库

数据库 oceanbase

InterruptedException异常会对并发编程产生哪些影响?

冰河

并发编程 多线程 高并发 协程 异步编程

python常用内置函数用法精要(二)

乔乔

11月月更

六年三次架构迭代,OceanBase 单机分布式一体化会是大势所趋吗?

OceanBase 数据库

数据库 oceanbase

BSN-DDC基础网络DDC SDK详细设计(六):交易查询、区块查询、签名事件

BSN研习社

BSN

记一次TiDB数据库Insert语句执行报错的处理过程

TiDB 社区干货传送门

Java重点 | 泛型

几分醉意.

Java 编程 11月月更

记录一次TiDB v5.2.3迁移到v6.1.0的过程

TiDB 社区干货传送门

迁移 实践案例

【从零开始学爬虫】采集猫眼电影热门资讯数据

前嗅大数据

爬虫 数据采集 爬虫软件 爬虫教程 数据采集教程

Fiori Elements 框架里 Smart Table 控件的工作原理介绍

Jerry Wang

SAP Fiori SAP UI5 ui5 11月月更

【看球和学Go】错误和异常、CGO、fallthrough

王中阳Go

Go golang 面试题 Go web 11月月更

从元宇宙、地产数字化到呼叫中心,华为云携手伙伴共创新价值

华为云开发者联盟

云计算 华为云 元宇宙

高性能数据访问中间件 OBProxy(六):一文讲透数据路由

OceanBase 数据库

oceanbase

云原生系列 【轻松入门容器基础操作】

叶秋学长

云原生 沙箱实验 11月月更

为什么 NGINX 的 reload 不是热加载?

Apache APISIX 中文社区

Apache nginx 开源 api 网关 APISIX

Python(文件操作)

浅辄

Python 文件 11月月更

火山引擎 DataTester 应用故事:一个A/B测试,将产品DAU提升了数十万

字节跳动数据平台

大数据 AB testing实战

数据卡顿怎么办,瓴羊Quick BI强劲数据引擎来帮忙

小偏执o

IT系统为什么需要可观测性?_云原生_云杉网络_InfoQ精选文章