序一可观测创造繁荣技术和软件生态可观测在2022年迅速成为热门话题,形成了云原生和DevOps之后新的技术潮流,并且广泛融入各个技术领域。该技术开始在运维领域中仅作为监控模块出现,后来逐渐演进成为贯穿软件全生命周期(研发、测试、部署、运维)的技术平台,不断推动软件工程走向数据化和现代化。近些年来,可观测从技术理论走向落地实践,成为企业信息化服务建设的工具。在云原生时代,可观测的普及有效解决了软件系统运维难度大的痛点,推动了IT系统实现高效交付、统一运维,以及持续且精准的系统优化。中国信通院云大所(中国信息通信研究院云计算与大数据研究所)作为国内数字化技术传播和标准制定的核心单位,亦在积极组织可观测技术研讨,推动可观测技术在产业界的实践落地,深度挖掘其在众多行业领域的应用价值。本书系统讲解了可观测的基本理念、建设方式和落地成效,包含丰富的实践案例,可以帮读者快速理解可观测的技术内涵,亦可帮广大信息技术从业人员、技术爱好者,以及寻求信息化转型的传统企业的从业人员,了解、实践和应用可观测。本书是一本的技术佳作。希望能够通过本书进一步向业界普及可观测的技术理念与实践应用,把可观测技术深度引入软件全生命周期的各个领域,提高软件产品的开放和兼容,推动IT系统在可靠、可、敏捷和研发效能等方面不断提升,实现云上软件系统架构升级,培养的软件,促进国内软件生态的繁荣。何宝宏 中国信息通信研究院云计算与大数据研究所所长 序二为什么我们要了解可观测工程次工业的基础是蒸汽动力的发明,第二次工业的基础是电力驱动的发明,那么当前信息优选的基础就是互联网驱动的数字,而互联网还在各行各业不断渗透,已经成为整个社会和人类进步的基本因素。如今各行各业都在快速互联网化,未来不仅仅是传统意义上的互联网公司提供互联网应用,每一个行业都会变成互联网应用。在行业,不仅仅只是线下门店、APP、小程序、数字门店、电商,整个行业都变成了一个互联网应用。在汽车行业,我们看到新能源汽车的蓬勃发展,但更要看到所有的汽车都变成了互联网汽车,每一辆车都是联网的,汽车本身从传统的硬件变成了某种情况下的软件,成为互联网应用。和医院也开始互联网化,我们现在可以通过线上平台、便民APP或小程序使用各种公共服务,这些服务也变成了一个个互联网应用。可见,越来越多的产业都在发生这样的变化。在互联网化的巨大业务需求下,整个 IT 基础设施正发生重大变化—从传统的单体应用逐步向微服务演化。这不仅体现在不同软件之间能通过 API 连接,随着容器和云原生技术的发展,软件内部也变成一个个微服务。在云计算的加持下,面向互联网的软件从传统的信息化支撑软件演进成业务的关键核心系统,此时对软件系统本身的生命周期管理也在改变,比如,以前交付后能以初始版本不升级就连续运行几年,变成现在每几天就会在线热更新一次。此刻,我们不仅要解决软件系统运行时产生的稳定问题,更需发潜在的线索,包括找到如何持续优化软件本身的思路,以及如何进一步提升用户体验,等等。传统的监控软件整体设计思路是被动的,是基于阈值或者事件驱动的逻辑,或者说是一种基于故障触发的逻辑。这对传统系统是有效的,因为监控软件的主要使用者是运维,他们只需要保 IT 系统本身的稳定,并不过多关注上层业务,更不用说用户体验了。而构建可观测的目标可不只是做一个更庞大的传统监控,而是要让所有与该系统相关的能从全局角度去理解整个系统的运行状态,包括理解软件的运行情况、理解代码的执行逻辑等,目标是服务所有研发、测试和运维团队,使大家能够在同一个上下文中阅读系统,对问题有一致的理解并给出真正触根因的解决方案。可观测面向的不仅是已显现的故障,更重要的是能够通过主动探索系统去发现问题,这些问题包括传统意义上的已定义的故障,也包括代码内隐蔽的 Bug、架构上的瓶颈点、执行逻辑里的漏洞、用户体验的缺陷、某一个用户操作中遇到的各种麻烦,等等。说到这里,你可能会认识到,若实整个可观测工程,就需要有一个记录软件运行状态的实时数据仓库,这个数仓的数据规模要比传统监控大得多,不仅包含指标、链路和日志,还包括用户行为事件、网络数据、安全数据、业务数据等,并要有能力去综合采集、存储、分析、管理各类海量的数据,同时又要保整体成本可控。它要能以统一标准的方式全量接入相关的数据,而不是只收集那些你自认为需要监控的数据,因为若很多数据没有被记录,那将无法完整还原真实历史状态;它能提供更多的测量手段去观测数据以探明动态的因果关联,而不像传统监控软件那样只能用固定格式的仪表盘来展示数据;它需要大幅度降低使用者的学习门槛,不仅面向运维,还有研发测试团队,甚至涉及产品运营团队,大家共同来解决共识问题,快速理解这些软件问题与业务问题间的上下文关联。因此,可观测工程不只是一个更好的监控工具,更是一种现代化的互联网软件基础设施,是团队执行力的体现。我们会清晰地发现,能否有效地构建可观测工程直接反映了整个公司产品的质量,间接反映了整个公司的发展潜力和文化。构建可观测工程本质上就是整个互联网软件本身的数字化,使用可观测平台的组织才会成为基于数据驱动的现代化组织。本书详细地描述了为什么要构建可观测、可观测的值、可观测构建过程中的原则和可能存在的陷阱,也指出了现代化软件工程的发展方向和趋势,值得每位(包括所有技术管理者)好好阅读和思考。我相信,当你看完本书后,一定会迫不及待地在公司内开始构建可观测工程。蒋烁淼观测云创始人&CEO序三窥见更远:望远镜和软件可观测软件可观测是近年来快展的一个主题,从技术到商业,我们看到围绕该主题诞生了无数新思想和新产品。虽然这是一本技术书籍,不过这里我想聊聊关于可观测的意义和一些更接近根源的东西。有记载的早的望远镜概念可追溯到1608年10月,荷兰一位名叫Hans Lippershey的眼镜商人提交的一份专利,其中描述了一种能将远处的东西放大的装置,距今已经400多年。这400多年是人类科学突飞猛进的时期,望远镜就像眼睛一样,让我们得以看清宇宙和万物,也因此成为科学中重要的仪器之一。从台望远镜诞生到现在,我们拥有了各种各样的望远镜:对宏观世界,有玩具双目望远镜到哈勃太空望远镜;对微观世界,有显微镜到LHC。科学史从某个角度来说是一部望远镜的进化史,一部可观测技术的进化史,也是一部我们对客观世界的理解不断深入的历史。将不可见的世界变成可见是我们理解客观世界运行规律的重要方式,因为不管你看不看和相不相信,这个世界就在此处不由分说地运转着。说回软件世界,我于20世纪90年代进入IT行业,当时的软件系统还都比较简单,大多都是单机系统,对于可观测的理解基本在于日志和基于源码或者二进制的软件调试技术。从单机的维度来说,这基本已经足够了。但是随着2000年后互联网行业的崛起,分布式系统开始登上舞台,在早期的简单分布式系统中,可观测并没有得到足够的重视,依旧延续着单机系统的思路:出了问题查询一下日志就好了!这在很长时间也相安无事。但是后来随着我们的应用和系统越来越复杂,再加上分布式系统比单机系统的不确定更(考虑到网络联通),即使我们能够实现代码,也已经不再能够轻易地知道系统的运行状态,这时迫切需代的“望远镜”。对于我们这一代软件,重要的事情之一就是改变我们看待软件可观测的态度,正视这是一门系统技术甚至是一门科学。其实如果从上面提到的人类进步史来看,望远镜的发明和发展几乎同步于我们对世界的理解,类比到我们现在所身处的云计算时代,可观测技术的成熟无疑会推动我们理解和实现云上的复杂系统,对此我毫不怀疑。这个方向仍然处于黎明期,有很多难题还有待解决,例如,如何尽可能消除观测对业务带来的影响?如何以更低的成本存储可观测数据?如何以更加符合人类直觉的方式快速向管理员展示系统的全貌以便于快速地定位故障和准确归因?回到这本书,本书行文方式落地且直观,通过实际的案例和一线软件的经验分享,令人信服地把可观测的哲学和理念变成可参考的实践。除了技术之外,也有关于团队管理以及软件工程与现代可观测技术结合的思考,相信无论是初学者还是行业老兵,程序员还是技术管理者,都能从本书中有所收获。,我想以希尔伯特的一句名言来结束这篇序言:Wir müssen wissen. Wir werden wissen.(我们必须知道,我们终将知道)。黄东旭,PingCAP联合创始人&CTO20年2月16日写于美国硅谷