Prometheus适配GaussDB开源开发任务
1 背景介绍
开源for Huawei(参考:https://developer.huaweicloud.com/programs/opensource/contributing/)通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。
开始之前,开发者可以下载 开源for Huawei Wiki(参考:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview) 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。
2 需求分析
2.1 项目影响力
1. Prometheus 是一个开源的监控与告警系统,最初由 SoundCloud 开发,现已成为 Cloud Native Computing Foundation (CNCF) 的项目之一。它专门设计用于监控分布式系统和云原生应用,具备强大的时间序列数据库(TSDB)用于存储监控数据,并通过灵活的查询语言 PromQL 提供实时数据分析和告警功能。Prometheus 通常用于监控微服务架构、云环境以及容器化应用。
主要功能:
时间序列数据存储:Prometheus使用专门的时间序列数据库(TSDB)存储监控数据。
多维数据模型:Prometheus 的数据存储方式允许用户通过标签对监控数据进行多维度的组织和分析。例如,通过标签,可以监控不同服务、实例、区域、版本等多个维度的数据。这种灵活的数据模型极大提高了查询的能力 。
拉取数据模型(Pull Model):Prometheus 使用拉取(Pull)模型采集监控数据。它定期从被监控的目标(如服务器、数据库、应用服务)中主动拉取监控数据。这些目标通常通过 HTTP 暴露一个称为 exporter 的端点来提供数据。
PromQL查询语言:PromQL 是 Prometheus 提供的功能强大的查询语言,专门用于时间序列数据查询和分析。
告警功能:Prometheus 具备强大的告警能力,通过 PromQL 定义告警规则,实时监控系统状态,并在条件满足时触发告警。
自动发现服务:Prometheus 支持多种服务发现机制,能够自动发现动态变化的服务或实例。
支持多种数据导出:Prometheus 具有一个庞大的生态系统,提供了多种 exporter,用于从各种应用、系统和服务中导出监控指标。
持久化存储与远程存储集成:虽然 Prometheus 的时间序列数据库适合短期存储,但对于长期存储需求,Prometheus 支持集成外部的持久化存储系统(如 Thanos 或 Cortex)。
简易WEB UI和与Grafana的集成:Prometheus 提供了一个简单的内置 Web UI,用于查询和可视化数据。
·所属社区:Cloud Native Computing Foundation (CNCF) 社区 。
·源代码地址:https://github.com/prometheus/prometheus。
·官网主页:https://prometheus.io/。
·主要开发语言:Go。
·用户使用情况:Prometheus 被全球许多知名企业所使用,例如 GitLab、Reddit、Uber、SoundCloud、DigitalOcean 等。不仅是大型互联网公司,许多中小型企业也使用 Prometheus 进行基础设施和应用监控。Prometheus 在 Kubernetes 生态中被广泛使用。Kubernetes 内置对 Prometheus 的支持,自动服务发现和动态监控功能使其成为监控 Kubernetes 集群中容器、Pod 和节点的主流工具。许多开源项目选择 Prometheus 作为其官方或推荐的监控工具。
·主要商业价值:
o 降低监控成本:Prometheus 是一个完全开源的项目,企业可以免费使用其核心功能,无需支付昂贵的商业监控软件费用。由于 Prometheus 的架构非常灵活,企业可以根据需求逐步扩展监控范围,避免购买不必要的昂贵商业监控套件。
o 提高系统稳定性和可靠性:Prometheus 提供了实时监控功能,能够在故障发生前发现系统异常,并通过 Alertmanager 及时触发告警。这能帮助企业快速响应和解决问题,减少系统停机时间(downtime),提高服务可用性。
o 支持现代化的IT基础架构:Prometheus 与 Kubernetes、Docker 等云原生技术无缝集成,成为云原生架构下的首选监控解决方案。随着越来越多的企业采用云原生技术,Prometheus 的商业价值进一步提升。
o 提高运营效率与自动化:结合 Prometheus 的告警系统和运维工具(如 Ansible、PagerDuty 等),企业可以实现自动化响应,快速处理故障,减少人为干预。
o 开放生态与社区支持:Prometheus 支持与其他企业级工具和服务的广泛集成(如 Kafka、Redis、MySQL、Nginx 等),使企业可以轻松将现有系统纳入监控范围。作为 CNCF 的核心项目之一,Prometheus 拥有庞大的开源社区支持。
高可扩展性与长期数据存储:然 Prometheus 默认适合短期数据存储,但结合 Thanos、Cortex 等解决方案,可以实现长期数据存储、跨集群的高可用性监控。
2. 项目数据:Fork 9.2K, Star 55.7K, Contributor 959,最近一次提交:2024-11-11 star历史(https://star-history.com/):
2.2 任务目的和范围
本任务的主要目的是让Prometheus社区支持GaussDB数据库,帮助拓展GaussDB的影响力,也方便Prometheus的用户能够使用GaussDB作为Prometheus的远程存储。同时,该任务可以为一些项目迁移打下基础,方便用户自建监控与告警系统的时候,可以选择GaussDB作为远程持久化存储,避免用户安装多个类型的数据库。
3 工作量评估和任务分解
3.1 工作量评估
任务 |
人/天 |
完成GaussDB数据库适配功能开发 |
2 |
完成DEMO设计和代码开发 |
2 |
基于CCE容器完成环境搭建和DEMO部署、验证 |
1 |
输出开发资料和博客 |
1 |
代码推送上游社区和更新社区资料 |
2 |
总计 |
8人天 |
3.2 完成GaussDB数据库适配功能开发
Prometheus Exporter就是用来收集和暴露指标的工具,通常情况下是Prometheus Exporter收集并暴露指标,然后Prometheus收集并存储指标,使用Grafana或者Promethues UI可以查询并展示指标。
Prometheus Exporter主要包含两个重要的组件:
Collector:收集应用或者其他系统的指标,然后将其转化为Prometheus可识别收集的指标。
Exporter:它会从Collector获取指标数据,并将其转成为Prometheus可读格式。
适配GaussDB的Exporter主要分为以下几个步骤开发:
1. 定义一个Exporter结构体,用于存放描述信息
2. 实现Collector接口
3. 实例化exporter
4. 注册指标
5. 暴露指标
参考其它相关的Exporter我们可以开发一个用于收集GaussDB系统视图数据指标的Exporter。
参考:
如何开发一个Prometheus Exporter:https://www.jokerbai.com/archives/kai-fa-yi-ge-jie-kou-jian-kong-de-prometheusexporter
Prometheus Exporter自定义开发:https://www.cnblogs.com/0x00000/p/17557743.html
PostgreSQL Exporter:https://github.com/prometheus-community/postgres_exporter/
GaussDB系统视图:https://support.huaweicloud.com/productdesc-gaussdb/gaussdb_19_0030.html
3.3 完成GaussDB演示DEMO设计
参考下面的用例图:
3.4 DEMO开发、部署和验证
参考下面的部署架构:
根据DEMO设计,完成演示功能开发和部署。要求使用CCE容器(Euler镜像)进行部署。
DEMO验证:
Prometheus部署完成后,GaussDB Exporter 会以 HTTP 接口的形式暴露从GaussDB 采集到的指标数据,Prometheus Server 通过定期从GaussDB Exporter暴露的 /metrics 接口拉取数据的方式来收集监控指标。通过访问 Exporter的 /metrics 的接口能够查看到采集到的GaussDB系统视图的监控指标数据。
根据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 代码推送上游社区
将代码合并到Prometheus官网主干代码;更新Prometheus官网资料,包括版本说明、开发指南等。
4 验收材料
验收细则 |
评分说明 |
是否为验收必选项 |
结果(通过/不通过) |
开发者举证 |
功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发 |
完成GaussDB数据库适配功能开发。举证提供PR链接。 |
是 |
||
代码质量:适配华为三大根技术生态的代码质量经过工具检测达标 |
推送给开源社区的代码符合开源社区关于代码风格、功能、自动化测试等要求。 |
是 |
||
提供相关文档,比如部署文档、使用文档、配置文档等 |
根据社区要求,完善相关的开发指南和部署指导 |
否 |
||
合入到开源项目主仓:代码推送上游社区 |
代码合并到当前主干分支。举证提供代码仓库链接。 |
是 |
||
Deomo设计&开发:完成功能演示Demo的开发 |
举证提供DEMO仓库地址和DEMO开发提交记录。 |
是 |
||
Demo部署&验证:完成功能演示DEMO基于华为云鲲鹏环境的部署和功能验证 |
提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的规格清单。 |
是 |
||
发布博客:发布博客介绍适配心得。 |
提供博客的地址。 |
是 |
||
制作单机版无高危开源镜像。 |
上架云商店。 |
否 |
||
单机版镜像上架时支持模板部署。 |
否 |
|||
制作集群版无高危开源镜像 |
上架云商店。 |
否 |
||
集群版镜像上架时支持模板部署 |
否 |
5 参考资料
1. 开源for Huawei介绍、环境搭建、示例项目、开发和部署指南:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview
- 点赞
- 收藏
- 关注作者
评论(0)