背景
随着分布式架构的逐渐发展,可观测性(Observability)技术得到了业界极大的关注,并被 Gartner 列为 2023 年十大战略技术趋势之一。我们于23财年便开始在此方向进行早期调研,并进行了技术布局与早期的开发,poc验证相关工作。相较于基于OpenTelemetry协议关注于企业内部容器及应用系统性能管理等指标相关的各类APM系统,我们的业务可观测能力不仅仅关注于系统中的各类应用或软件,而是更加面向各类业务场景进行分析理解与接入保障。该能力既关心一次API调用过程中的各种链路关系,也关注这次调用过程中所涉及到的订单、用户等信息(构建多阶段链路资产关系),同时还关注这次链路调用过程中所依赖的数据库内容、缓存内容、消息内容等底层数据依赖(构建链路数据画像资产关联)。这是可观测性技术与业务相结合的一个重要发展趋势,在相关行业报告中 Gartner 也提到,“未来一切业务皆需可观测性”,简单地讲就是把运营人员、运维人员、IT 人员看到的数据做统一,而不是互相甩锅。在可观测能力加持下,用户既可以查看到他所关注的各类业务数据信息及其之间的关联关系,也可以基于这套资产构建他所感兴趣的任何分析能力。
建设基准
参考中国信通院2021年牵头编写的《云上软件系统稳定性 可观测性平台技术要求》中所描述的对于数据采集(对应数据模型)、数据处理(对应信息处理、查询分析)和数据使用(对应内容消费)三个核心能力的建设规范,我们在建设业务可观测性过程中实现了以下基准: (一)统一构建方式 整套业务资产观测能力均基于标准的内部java应用字节码增强插件与流式数据计算能力,日志处理分析查询平台。其依赖的所有技术均可在当前的框架内部署并运行,跨租户可直接复用,已在多TLDC站点实现规模化部署。得益于标准化采集技术,我们可以将传统的各种指标、链路、追踪、用户行为、事件、安全、数据访问等多种数据统一收集,并在业务语义要求的基础上建立其多维度关联关系。 (二)统一数据模型 统一的可观测性技术需要统一的数据模型,统一的数据模型也是数据统一处理、相互建联与转化的基础。在应用启动阶段资产、应用服务资产、链路资产、多阶段画像等资产采集过程中,我们采用的标准化统一数据模型进行数据上报与关联,极大降低了数据处理复杂性并加快了数据处理分析速度。同时也简化了相关数据存储分析及使用过程中的系统复杂度。 (三)统一信息处理 在同一数据模型的基础上,我们构筑了一套统一的观测信息处理能力。通过对各类接口调用、消息发布与消费、数据读取与写入、缓存查询与更新等操作进行标准化建模规范制定后,所有采集到的数据采用统一的处理转换与计算逻辑生成结构化观测信息,并根据信息的使用频率、关联性等进行了摘要计算,冷热存储与持久化相关工作,为后续查询分析与内容消费打下基础。 (四)统一查询分析 基于统一的数据模型与采集处理分析链路,针对流量画像、流量库回放、RPC回放调用、各类业务测试平台等业务流量,我们制定了统一的查询分析能力。所有采集到的可观测性资产信息都可以通过直接观测资产进行查询展示,也可以根据链路节点调用关系与子调用关联进行业务语义化编排展示,同时还可以根据业务特征进行多阶段链路关联分析展示。 (五)统一内容消费 业务可观测性所采集到的各类数据与分析结果均可以通过统一的方式进行消费和处理。我们构建了高性能http及rpc查询接口、开放式sdk等能力可以对链路多阶段关联关系,资产摘要,资产详情等进行查询分析处理。目前已经供给了多个业务平台进行数据消费与二次开发使用。
整体架构
根据数据来源与业务结合点关系,我们设计了流量采集后的多阶段流量关联,同时针对流量中的数据依赖访问进行了采集,对应用启动过程中的依赖进行了采集,并建立了对于同一数据字段不同流量的访问关系。脱敏后的示意图:
流量采集
我们对于网关层,服务层各类流量进行了充分的采集,并根据特征字段建立了不同流量之间的编排关系。最终生成了流量编排模型,为后续流量回放技术提供入口来源。
链路模型
对于一笔流量中所访问到的各类应用及其应用访问的各类DB,消息,缓存等中间件资源,我们通过切面技术定义特征桩点进行了采集,解析,摘要与冷热存储。
应用模型
对于应用启动阶段及运行时所依赖的各类资源,我们也通过定义相应的特征桩点及日志解析采集技术,建立了应用模型。
服务模型
应用以服务形式对外提供调用能力,我们根据对http,rpc,mq消费等各类入口信息的采集与定义,分析了应用提供不同服务时所依赖的各类系统资源。
资源访问模型
上面的视角都是以流量,应用和服务视角进行展开的。这里我们针对具体的资源,反向归纳了所有对该资源进行读写操作的所有链路与服务,当读取过程中找不到数据的时候,通过资源访问模型可以找到所有写入阶段的流量和服务,结合业务场景进行分析。
与arthas相比
可以看到基于切面的链路运行资产技术和我们常用的故障定位分析工具arthas很像,这里我给出二者之间的简要对比:
| 链路运行资产 | Arthas | |
|---|---|---|
| 是否需要安装 | 跟随切面插件部署,不需要额外安装,通过trace打标可以直接开启采集 | 需要单独对机器进行部署安装 |
| 性能是否有损 | 有损,机器性能较差时暂停采集保护业务 | 有损 |
| 采集实效性 | 常规桩点实时采集 | 需要事后开启watch命令 |
| 采集灵活度 | 除常规桩点外,支持自定义桩点,单不够灵活 | 支持各种观测参数,灵活可用 |
| 数据持久化 | 支持,本机存储,SLS存储,结构化存储 | 支持,本机存储 |
| 链路关联化展示 | 支持 | 不支持 |
| 数据开放 | 支持,提供各类查询手段 | 需要自己二次采集开发 |
以上就是我们在金融业务可观测领域的一些沉淀和分享,有更多想要交流合作或者想要加入我们一起共建的内容,可以直接站内信与我联系。