可观测性技术发展研究报告 (2023年) 中国信息通信研究院云计算与大数据研究所2023年12月 版权声明 本报告版权属于中国信息通信研究院,并受法律保护。 转载、摘编或利用其它方式使用本报告文字或者观点的,应注明“来源:中国信息通信研究院”。违反上述声明者,编者将追究其相关法律责任。 前言 现代信息系统往往呈现规模巨大、结构复杂和分布式架构等特点,使得传统的系统监控和调试方法难以满足全面观测和管理的需求,这 给故障排查、性能优化和数据分析等任务带来巨大困难。在此背景下,可观测性技术应运而生。 可观测性技术通过引入实时日志记录、指标监控、分布式追踪等先进工具和技术,为企业提供全面、精确和实时的系统观测能力,从而帮助企业深入了解系统的运行状况、行为模式和性能指标。可观测性技术不仅仅是简单地监控系统状态,还可以提供对系统内部进行深度洞察的能力,有助于快速发现问题、定位故障,并采取相应措施进行故障修复和性能优化。 本报告探讨和解释了可观测性技术的概念、关键技术、落地路径和发展趋势,并深入分析了可观测性技术在故障排查、成本优化、数据分析等方面的应用和实践价值,旨在为读者提供有价值的指导和深入的理解。 最后,我们衷心感谢所有为本报告贡献宝贵意见和专业知识的专家、学者和行业从业者。我们热切期待与业界专家和用户共同探索可观测性技术的前沿发展趋势和应用场景,共同塑造一个更加可靠、高效和创新的技术世界。同时,我们也真诚地邀请各方专家和读者不吝指正,如报告中有不足之处,我们愿意倾听和改进,以提供更加优质的内容和观点。 目录 一、可观测性概述1 (一)可观测性定义1 (二)可观测性不是监控,是监控演进的下一阶段1 (三)可观测性应用场景广泛,多样价值获得认可1 二、可观测性起源2 (一)可观测性起源2 (二)IT技术持续发展为系统稳定运行带来巨大挑战3 (三)云时代到来,加速可观测性需求涌现5 三、可观测性价值总体视图5 四、可观测性的内核剖析8 (一)可观测性“三大支柱”8 (二)更多样的观测数据,持续丰富可观测性内核9 五、可观测平台能力构建10 (一)统一构建方式10 (二)统一数据模型11 (三)统一信息处理12 (四)统一查询分析13 (五)统一内容消费14 (六)环境适配能力15 (七)行业标准参考16 六、可观测性应用场景17 (一)系统实验与测试17 (二)站点可靠性工程(SRE)18 (三)数据可观测20 (四)故障根因分析21 (五)云成本可观测22 (六)安全可观测23 七、可观测性落地效果24 (一)提升基础设施全面控制能力24 (二)实时洞察应用性能优化需求26 (三)理解用户需求和优化体验28 (四)精准控制变更并优化发布效果29 (五)洞悉业务状况并提升决策能力31 八、可观测性发展趋势32 (一)可观测技术发展趋势32 (二)可观测产业生态趋势33 附件135 图目录 图1可观测性价值总体视图6 图2链路追踪示意图9 图3可观测性平台架构17 表目录 表1可观测性开源项目或协议35 一、可观测性概述 (一)可观测性定义 在信息系统及云计算领域中,可观测性指的是通过系统的外部输出来度量系统内部运行状态的能力。可观测性工具的工作原理是通过不断进行探索性调查的迭代过程,确定系统问题可能出现的位置和原因。它的目标是使我们能够主动地识别任何故障模式,无论是已知的还是未知的。 (二)可观测性不是监控,是监控演进的下一阶段 从概念内涵上来说,监控和可观测性是相互依赖的不同概念,“监控”是为提高系统的可观测性而执行的操作,“可观测性”是该系统的一个属性,如功能性或可测试性。从覆盖范围来说,监控是从系统出发,关注系统本身的健康情况;可观测是从业务出发,关注业务的健康情况,因此范围更广更大。从应用目的来说,使用监控是用来判断系统是否可用,通过可观测性可以实际指出问题位置和具体原因。从操作性上来说,传统的监控工具通过对照已知阈值检测系统条件来工作,这些阈值将提示是否存在已经设定条件的错误。这是一种非常被动的方式,因为只能发现已知的问题或错误。可观测性工具基于指标收集、日志分析、事件追踪、机器学习等技术和方法,可以提供更全面、更主动、自适应的监控和分析能力。 (三)可观测性应用场景广泛,多样价值获得认可 保障系统稳定。实时观测系统和应用程序的各种指标和日志,及时发现和解决问题,降低系统故障和安全漏洞的风险,保障系统的稳 定性和安全性。提高用户体验。观测产品在不同环境下的性能和稳定性,及时发现和解决问题,提高产品质量和用户体验,增强用户忠诚度和口碑。加强安全性。及时发现和应对安全漏洞和攻击,提高系统和数据的安全性和可靠性,增强用户信任和品牌价值。提高服务水平。通过对用户行为和反馈的监控和分析,及时发现和解决用户问题和需 求,提高服务水平和用户满意度,增强市场竞争力和盈利能力。优化资源利用。观测和分析资源的使用情况,发现资源浪费和瓶颈,及时进行优化和调整,降低成本和提升资源利用率。 二、可观测性起源 (一)可观测性起源 可观测性起源于20世纪60年代,最早是由匈牙利裔工程师鲁道夫·卡尔曼(RudolfKálmán)在电气工程领域中提出的概念1,根源于控制理论(应用数学的一个分支,指使用反馈来影响系统的行为以实现预期的目标)。 电气工程从19世纪末开始,经过近百年的发展,在各个细分领 域中取得了长足的进展。尤其在20世纪50年代中发展迅速的航空航天领域,对系统的复杂程度、多部门开发协同、系统运行环境、研发速度等都产生了巨大的挑战,同时对于系统的稳定性要求变的更高。在此背景下可观测性的概念被提出,其核心目标是用来快速判断系统的工作状态并定位缺陷的根因。 随着计算机科学及软件工程的发展与实践,软件与信息系统的工 1R.Kalman,“Onthegeneraltheoryofcontrolsystems,”IRETransactionsonAutomaticControl,vol.4,no.3,pp.110–110,1959. 作状态也需要从系统外部进行度量。通过仿照电气系统输出信号进行观测的方式,我们可以利用计算机和软件输出的运行日志来实现软件和信息系统的可观测性。 (二)IT技术持续发展为系统稳定运行带来巨大挑战 随着信息化时代的到来,数字化已经渗透到各个行业,IT技术也在快速发展。在此过程中,IT系统在系统架构、开发方式、部署方式、运行环境等方面经历了多次技术变革。系统架构方面,经历了从整体 式、分层式、分布式到云原生的变化;开发方式方面,经历了从瀑布 模式、螺旋模式、敏捷模式到DevOps的变迁;部署方式方面,由物理机、虚拟机、容器化到Serverless;运行环境方面,由自建机房、托管机房、私有云、公共云到混合云。 IT系统的技术升级在迭代效率、部署灵活性、性能和成本等方面带来了巨大的收益。然而,随着系统的不断演进,其本身的复杂性也不断增加,从而给稳定性、故障发现和问题定位等方面带来了巨大的挑战。包括:系统更加复杂,架构的升级带来了开发效率、发布效率、系统灵活性、鲁棒性等优势,但随之而来的是系统的复杂度将更高, 一次调用可能会涉及数十个应用组件,问题的定位将更加困难;场景更加多样,随着5G、移动互联网、物联网(IoT)、大数据、人工智能、VR/AR、边缘计算等技术的快速发展及融合应用,触网、联网、用网的实体越来越多,应用越来越广泛,需要观测的对象种类、应用场景、数据规模、用户行为模式等也都发生了巨大的变化;协同开销变大,公司内的IT系统组成往往涉及多个不同部门的不同角色,例 如研发、测试、运维(应用运维、中间件运维、系统运维、网络运维等)和SRE等,一个新的问题往往需要多个部门协同定位;环境动态性增强,无论是微服务架构还是容器化部署模式,带来的一个特性是环境的动态性增强,每个实例的生命周期会更短,出现问题后往往现场已经销毁;服务依赖增加,在微服务、云、Kubernetes的环境中, 服务的依赖变的更多,包括各类其他业务应用、各种中间件、云上使用的各类产品、容器运行时、虚拟机等,问题排查需要涉及更多的组件;缺少有效手段进行日志分析,基于容器或者虚拟机部署,微服务节点多,大部分情况采用终端命令查看,在集群、分布式、微服务模式下,日志查找麻烦而且耗时,日志需要统一查询和分析。 传统的监控工具,如ITIM、APM、NPMD等相对只关注IT系统中的部分场景,往往无法解决上述变革带来的稳定性、故障发现、问题定位等挑战,因此需要一个更加全面、有效、快速的手段来帮助开发和运维人员发现和定位系统中的问题。可观测性工具可以帮助开发和运维人员监测系统的各个组件和交互关系,收集和分析关键指标和日志数据,进行故障排查、问题定位和性能优化。可观测性工具还可以提供更细粒度的数据和指标,帮助识别和解决复杂系统的问题,例如分布式追踪、日志分析、指标监测和事件处理等。稳定性保障和可观测性工具是相辅相成的,稳定性保障依赖于可观测性工具提供的数据和洞察,而可观测性工具则需要稳定性保障体系确保系统正常运行并提供可靠的数据。 (三)云时代到来,加速可观测性需求涌现 云时代的系统更复杂。随着云时代的到来,应用从单体化的程序逐步演变成微服务化,甚至引入了更多的云厂商,包括第三方PaaS、SaaS提供商的技术和服务,此时此刻,传统的面向单一的指标、日志、追踪的单一化的监控产品,诸如监控、CMDB、日志系统、APM、RUM等已经无法独立完成有效的进行问题追踪定位。同时,随着更多的可变基础设施、第三方技术服务、DevOps技术被引入,如ServiceMesh、FeatureFlags、混沌工程,如果无法有效的构建系统的可观测性,将无法有效地利用好这些技术。此外,伴随着发布体系CI/CD技术的普及和微服务的引入,工程师们不得不进一步面对生产系统进行调试和分析,可观测性将被视为一种代码调优和架构优化的基石。我们不仅仅将可观测性定位成一种运维的手段,更将可观测性定位成对于整个技术栈的可视化、可分析、可探索的工具。这种定位不仅是因为可观测性的重要性,更是因为它是提升云时代研发效能的必然选择。 可观测性是云时代IT工作的基础。云时代构建可观测性不仅仅是解决系统可靠性的问题,更是整个DevOps团队每天工作的基础,是软件系统升级迭代的基础,是进一步建立自动化的基础,是系统进步的基础,是引入新的技术栈的基础,是为最终用户提供可信SLA的基础。 三、可观测性价值总体视图 可观测性是现代系统架构中不可或缺的核心要素,它通过提供全面的数据和信息来支持系统的监测、分析和优化。本章将围绕可观测 性的内核,结合可观测性平台能力,给出可观测性在不同领域的落地效果和应用场景,并提出图1所示的可观测性价值总体视图。 图1可观测性价值总体视图 来源:中国信息通信研究院 可观测性内核:可观测性的内核包括日志、指标、链路追踪“三大支柱”,叠加更多应的观测数据,共同构成了系统监测和分析的基础。通过全面记录和收集系统的运行状态、行为和性能数据,可观测性内核为问题排查、性能优化和安全审计等提供了关键的数据支持。 可观测性平台能力:云时代对于可观测性的要求就是统一。参考中国通信行业标准《云上软件系统稳定性可观测性平台技术要求》指标要求,总结归纳出构建可观测性平台需要具备统一构建方式、统一数据模型、统一信息处理、统一查询分析、统一内容消费和环境适配能力六方面能力:统一构建方式能够简化部署和管理过程,提高平 台的易用性和可扩展性;统一数据模型使得不同数据源的格式和结构标准化,提高数据的一致性和可用性;统一信息处理能力使用户能够快速提取关键信息,进行进一步的分析和决策;统一查询分析能力提供一致的方式进行数据查询和分析,帮助用户快速定位和解决问题;统一内容消费能力提供一致的用户体验,简化用户对数据的访问和利用;环境适配能力使平台能够适应不同的操作系统、云平台、应用框架和技术堆栈等环境,满足不同用户和应用场景的需求。这六方面的能力共同构建了一个全面