本文版权为《邮电设计技术》所有,如需转载请联系《邮电设计技术》编辑部
摘 要:针对传统可观测性系统存在的数据孤岛、建设冗余、数据关联度不高等问题,提出一种云原生环境下可观测性模型。通过对多源可观测数据进行集成融合,采用无侵入式可观测性数据的采集和追踪方法,构建统一可观测数据标签体系,实现云原生下应用程序全链路可观测数据的追踪、可视和持续分析。实验结果表明,提出的可观测性模型对性能带来的影响最大不超过6%,在链路追踪效果上具有较强的优势。
关键词:可观测性;eBPF技术;数据标签;云原生
doi:10.12045/j.issn.1007-3043.2025.01.013
概述
1.1 云原生给传统监控带来挑战
随着企业数字化转型进程的加快,云原生架构凭借 DevOps 概念和容器化部署、持续集成交付、多微服务构建等特点,得到各行各业的广泛认可。基于云原生架构的应用程序通常采用大规模容器化部署的形式,构建在由多个云资源支持的动态编排的微服务之上,虽然具备较好的灵活性和扩展性,但应用程序也呈现出多系统层级、多服务调用、多通信协议等典型特征,导致系统的复杂性指数级增长。为解决云原生应用程序的监控问题,工程师们受控制理论的启发,开始考虑一种新的范式——可观测性(Observability)。
1.2 云原生下可观测系统的现状
在控制论的定义中,可观测性是指从黑盒系统外部输出的知识中推断出其内部状态的程度。在IT领域中,可观测性被定义为通过观察系统和应用程序的外部输出,来理解其内部工作状态的能力,其目标是对复杂的云原生系统中发生的一切给出合理的解释。可观测性的工具和方法主要依赖于指标(Metrics)、追踪(Tracing)、日志(Logging)这3个方面。
目前,可观测性各个方面都有许多成熟的开源组件,基于开源组件可以很容易地为系统搭建一套开箱即用的可观测性设施。但是,对于系统数量多、运维难度大、云化程度高的大中型公司来说,云环境下系统层级的概念增多,服务调用链路也变得更长,基于标准开源组件的可观测性系统往往存在以下问题。
a)各类可观测性数据之间相互割裂,数据孤岛现象严重。当某次服务调用发生告警时,仅依靠指标数据、链路数据、日志数据中某单一类型的可观测性数据,无法实现告警根因的全面排查和准确定位。
b)基于开源组件的可观测性系统为获取云内服务调用全链路的可观测数据,通常采用SDK插桩的形式,在云内各组件中部署的侵入式的 agent采集器,给应用程序的性能和安全性带来新的风险和挑战。
c)各类数据检索困难。不同来源数据的标签定义不同,缺少统一概念和定义的数据标签体系,无法使用某一数据标签作为唯一标识,对数据进行快速地筛选检索,难以下钻定位具体的主机、微服务、Pod、实例等内容。
针对上述问题,需要一种能融合多源可观测数据、支持无侵入式采集、具备统一数据标签的技术架构来提高云原生架构下应用程序的可观测性。