ApacheSkyWalking适配GaussDB开源开发任务

举报
yangjiaxin98 发表于 2024/10/28 19:55:46 2024/10/28
【摘要】 Apache SkyWalking是一个基于OpenTracing规范的、开源的APM系统,它是专门为微服务架构以及云原生架构而设计的。本任务的主要目的是让SkyWalking社区支持GaussDB数据库,帮助拓展GaussDB的影响力,也方便SkyWalking的用户能够使用GaussDB作为后端存储系统。

1 背景介绍

开源for Huawei(参考:https://developer.huaweicloud.com/programs/opensource/contributing/)通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。

开始之前,开发者可以下载 开源for Huawei Wiki(参考:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview) 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。

需求分析

2.1 项目影响力

1. Apache SkyWalking是一个基于OpenTracing规范的、开源的APM系统,它是专门为微服务架构以及云原生架构而设计的。从 SkyWalking 6.0开始,SkyWalking将自身定义为一个观测性分析平台(Observability Analysis Platform, OAP)。

· 主要功能

o 分布式追踪(Distributed Tracing):支持端到端的追踪,能够捕获应用程序中的每个请求链路;支持多种编程语言的自动追踪,能够自动记录每个微服务之间的通信细节,构建完整的请求路径。

o 性能指标监控(Performance Metrics Monitoring):可以监控每个微服务的性能指标(响应时间、吞吐量、错误等);支持实时采集和展示性能数据,及时反馈应用健康状态,并且能够通过内置分析引擎对大量监控数据进行聚合和分析。

o 日志分析(Log Analysis)SkyWalking 能够将应用程序的日志与分布式追踪数据进行关联,支持自动收集和存储服务端的日志信息。

o 服务拓扑图(Service Topology)SkyWalking 自动生成分布式系统中各服务间的依赖关系图,展示微服务之间的调用关系,还能动态反映每个服务的健康状态和性能指标。

o 告警(Alarming)SkyWalking 提供了灵活的告警系统,允许用户根据服务的性能指标(如响应时间、错误率、流量等)自定义告警规则,并且支持将告警信息发送到多种渠道。

o 可视化仪表盘(Visualization Dashboard):通过集成 SkyWalking UI,用户可以直观地查看各种监控数据,支持多种图表类型和深入挖掘查看具体的链路追踪信息。

o 跨集群和多云环境支持SkyWalking 支持跨集群、多数据中心和多云环境的分布式系统监控,并且支持与IstioEnvoy等服务网格集成。

o 插件与扩展能力SkyWalking 提供丰富的插件体系,允许用户开发和安装自定义插件,扩展其功能,并且支持主流中间件与框架。

· 所属社区Apache 软件基金会 (Apache Software Foundation, ASF) 社区管理,它最初由吴晟(Sheng Wu)创建,后来贡献给 Apache 社区。

· 源代码地址https://github.com/apache/skywalking

· 官网主页https://skywalking.apache.org/

· 主要开发语言Java

· 用户使用情况SkyWalking 被许多大型企业和组织使用,特别是在需要监控和优化分布式系统、微服务架构和容器化环境的场景中,特别是在国内的一些一线互联网企业有着广泛的使用。

· 主要商业价值

o 性能监控与优化SkyWalking 提供了对应用程序和服务的实时性能监控,通过收集和分析性能数据,企业可以根据实际数据优化系统架构和配置,提高系统的整体性能和稳定性。

o 故障排查与诊断:提供了强大的分布式追踪能力,能够追踪请求在多个服务间的流动,帮助快速定位和诊断故障。通过详细的追踪数据和性能指标,企业可以更准确地进行根因分析,减少故障恢复时间和维护成本。

o 可视化与报告SkyWalking 提供了多种可视化工具,如仪表板、图表和趋势分析,帮助企业直观地了解系统状态和性能。企业可以生成各种性能报告和分析文档。

o 支持云原生架构:可以帮助企业有效地监控和管理动态的容器化环境,可以与服务网格(如 Istio)集成,提供对服务网格内部的可观察性和管理能力 。

o 成本控制SkyWalking 可以在本地数据中心、云环境或混合环境中部署,帮助企业根据实际需求和预算进行灵活选择。

o 合规性与安全SkyWalking 可以帮助企业实现对敏感数据的监控和合规性检查,支持数据保护和隐私政策的实施。

2. 项目数据:Fork 6.5K, Star 23.7K, Contributor 471,最近一次提交:2024-9-19 star历史(https://star-history.com/):

2.2 任务目的和范围

本任务的主要目的是让SkyWalking社区支持GaussDB数据库,帮助拓展GaussDB的影响力,也方便SkyWalking的用户能够使用GaussDB作为后端存储系统。同时,该任务可以为一些项目迁移打下基础,方便用户使用SkyWalking的时候,可以选择GaussDB作为后端存储系统。

3 工作量评估和任务分解

3.1 工作量评估

任务

/

完成GaussDB数据库适配功能开发

2

完成DEMO设计和代码开发

2

基于CCE容器完成环境搭建和DEMO部署、验证

1

输出开发资料和博客

1

代码推送上游社区和更新社区资料

2

总计

8人天

3.2 完成GaussDB数据库适配功能开发

· 了解主要的存储接口包括:

Storage Module Interface:定义了存储的基础操作,如数据插入、查询、删除、更新等。

DAO (Data Access Object):用于抽象具体的数据库操作。

· 研究现有存储实现,通过现有的存储插件 (https://github.com/apache/skywalking/tree/master/oap-server/server-storage-plugin) 来规划GaussDB 插件结构。

· 参考 SkyWalking 中其他存储系统的表结构,基于GaussDB定义存储实体,并针对 GaussDB 的特性进行优化 。实现 Data Access Objects (DAO),主要是以下几类:

   ·  TraceDAO:处理追踪数据的存储和查询。

   ·  MetricDAO:处理性能指标的存储和查询。

   ·  MetadataDAO:处理服务、实例、端点的元数据存储和查询。

   ·  LogDAO:处理日志数据的存储和查询。

· 需要针对GaussDB特性进行优化支持批量写入和高效查询。

· SkyWalking 通常会使用连接池来管理数据库连接。你需要选择并配置适合 GaussDB 的连接池。确保在配置中支持 GaussDB 的连接参数(例如地址、端口、用户、密码等),并提供配置模板。

· 编写一些功能测试,并为GaussDB 存储插件编写详细的配置和使用文档。

参考:

数据存储扩展:

https://skyapm.github.io/document-cn-translation-of-skywalking/zh/8.0.0/guides/storage-extention.html

Skywalking IoTDB存储插件设计:

https://blog.csdn.net/weixin_44023810/article/details/120555823

3.3 完成GaussDB演示DEMO设计

参考下面的用例图:

3.4 DEMO开发、部署和验证

参考下面的部署架构:

1. 管理前端--- 演示前端查询任务执行结果

2. 资源服务--- 演示使用SkyWalking监控资源服务,并将监控数据存储在GaussDB

3. SkyWalking Agent和业务系统绑定在一起,负责收集各种监控数据。

4. SkyWalking oapservice是负责处理监控数据的,比如接受SkyWalking agent的监控数据,并存储在数据库中;接受SkyWalking webapp的前端请求,从数据库查询数据,并返回数据给前端。SkyWalking oapservice通常以集群的形式存在。

5. SkyWalking webapp,前端界面,用于展示数据。

6. SkyWalkingStorage存储后端使用GaussDB

DEMO验证:

部署SkyWalking后,确保SkyWalking能够成功连接到GaussDB。由于最新版本暂没有提供Agent插件支持。我们采取主动上报数据到 SkyWalking OAP Server,可以使用SkyWalking gRPC协议上报数据:

引入SkyWalking gRPC协议文件,在pom.xml中引入SkyWalking gRPC的依赖。

生成相对应的gRPC客户端代码

实现数据上报逻辑,构造我们要上报的数据格式,通过接口将数据发送给OAP Server

验证数据上报结果,首先确认SkyWalking UI页面,确认上报的数据是否已经被接收和展示。然后查看OAP Server的日志,确认是否接收到数据上报的请求,以及是否有处理异常。

最后在GaussDB中验证数据完整性与准确性,将服务上报的数据与GaussDB中查询到的数据进行对比,确认是否一致,结合SkyWalking UI中定位某个具体的调用链(Trace),并在GaussDB中查询对应的Trace数据,确认两者的一致性。

根据DEMO设计,完成演示功能开发和部署。要求使用CCE容器(Euler镜像)进行部署。

为了简化用户开发,提供了一个项目脚手架。开发者可以在脚手架基础上,完成DEMO功能开发。可以参考: https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/blob/main/README.md  提供的指导,可以帮助您在华为云开通资源、编译DEMO和基于DEMO做增量代码开发。

3.5 在华为云开发者论坛输出博客

访问华为云开发者论坛(参考:https://bbs.huaweicloud.com/blogs)发表博客,介绍完成这些任务的过程和心得。内容包括不限于如下内容:

·开源for Huawei的背景

·开源软件的功能介绍

·开发适配过程及碰到和解决的问题

·DEMO设计、开发、部署过程

·代码推送开源社区及互动过程

博客打上如下标签:

·开源(必选)

·开发者(必选)

·GaussDB数据库(可选)

·云数据库 GaussDB(可选)

· 鲲鹏(可选)

·昇腾(可选)

·鸿蒙(可选)

·对象存储 OBS(可选)

3.6 代码推送上游社区

将代码合并到SkyWalking官网主干代码;更新SkyWalking官网资料,包括版本说明、开发指南等。

SkyWalking仓库地址: https://github.com/apache/skywalking

验收材料

验收细则

评分说明

是否为验收必选项

结果(通过/不通过)

开发者举证

功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发

完成GaussDB数据库适配功能开发。举证提供PR链接。

代码质量:适配华为三大根技术生态的代码质量经过工具检测达标

推送给开源社区的代码符合开源社区关于代码风格、功能、自动化测试等要求。

提供相关文档,比如部署文档、使用文档、配置文档等

根据社区要求,完善相关的开发指南和部署指导

合入到开源项目主仓:代码推送上游社区

代码合并到当前主干分支。举证提供代码仓库链接。

Deomo设计&开发:完成功能演示Demo的开发

举证提供DEMO仓库地址和DEMO开发提交记录。

Demo部署&验证:完成功能演示DEMO基于华为云鲲鹏环境的部署和功能验证

提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的规格清单。

发布博客:发布博客介绍适配心得。

提供博客的地址。

制作单机版无高危开源镜像。

上架云商店。

单机版镜像上架时支持模板部署。

制作集群版无高危开源镜像

上架云商店。

集群版镜像上架时支持模板部署

参考资料

1. 开源for Huawei介绍、环境搭建、示例项目、开发和部署指南:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。