开源监控组件助力Java开发,让openGauss更出色

发表时间: 2021-12-10 11:00

2011 年,马克·安德森(网景公司创始人、硅谷著名风险投资人)留下一句经典名言——软件正在吞噬世界。这句看似耸人听闻的论断,现今早已为人习以为常。过去 10 年,在互联网浪潮下,IT 技术飞速发展,软件、开源、云计算、云原生掀起一波又一波的高潮,创新技术不断涌现。

今天,以 kubernetes 为代表的云原生技术正在吞噬世界。随着 Kubernetes 成为容器编排领域的事实标准,Prometheus 也击败了度量领域以 Zabbix 为代表的众多前辈,成为云原生时代容器监控的事实标准。

Prometheus 使用 Pull 的方式去搜集被监控对象的监控指标数据,然后,再把这些数据保存在一个 TSDB (时间序列数据库)中,以便后续可以按照时间进行检索。但是,由于大多数监控无法直接提供监控接口,所以 exporter 诞生。exporter 是一个采集监控数据并通过 Prometheus 监控规范对外提供数据的组件。

业务之痛

目前,既有 Prometheus 提供的官方 exporter,也有第三方 exporter。正是 exporter 让华夏银行基础技术研究团队眼前一亮,因为他们缺乏一款针对 openGauss 数据库的监控组件。

据华夏银行基础技术研究团队负责人胡捷介绍,华夏银行从去年开始在银行内推广应用 openGauss 数据库,效果不错。

众所周知,银行金融服务的性能和稳定性至关重要,其中,交易数据库服务的可用性、可靠性、稳定性又是核心环节。openGauss 具备优异的性能,满足海量交易处理、快速稳定响应的要求;结合单元化部署模式,可以实现高效灵活的横向扩展和业务支撑。

胡捷说:“openGauss 是一款成长型开源数据库。一方面,它比较新,深度融合华为在数据库领域多年的经验,有很多优势,比如高性能、高可用、高安全、易运维。另一方面,它还有进一步成长的空间,依托 openGauss 开源社区,大家可以一起来完善产品,推动它向前发展。”

对胡捷团队而言,为保证业务正常运行,构建以 Prometheus 为核心的完备监控体系必不可少。但是,他们却没有一款合适的监控组件从 openGauss 数据库获取监控信息并传送给 Prometheus。

走上自研之路

如何获得这个监控组件成为摆在胡捷团队面前的重大问题。

由于市面上找不到合适的产品,所以自研成为华夏银行基础技术研究团队的唯一出路。

此时,外界也传来一个好消息。2021 信创“大比武”鲲鹏基础软件开发赛道启动,它由信息技术应用创新工作委员会指导,华为主办,重庆鲲鹏创新中心、北京鲲鹏联合创新中心、openEuler 开源社区、openGauss 开源社区及 openLooKeng 开源社区共同承办。

胡捷团队打算做的事与大赛主题非常契合,所以积极报名参加了大赛。

据悉,本次大赛分设三个赛道:openEuler 赛道、openGauss 赛道和 openLooKeng 赛道。胡捷团队选择了 openGauss 赛道,他说:“选择这个赛道可以把比赛跟我们的实际应用结合起来,一方面,参加比赛,检验我们产品方案的技术水平,并了解业界的技术进展;另一方面,丰富我们自己的产品应用。可以说,这是一个双赢的选择。”

在 openGauss 赛道,他们的赛题是“提供 Prometheus exporter 用于采集和监控 openGauss 服务的指标及数据”。

华夏银行基础技术研究团队

从 7 月 14 日启动报名到 8 月 31 日作品提交截止,时间不足两个月。在了解赛题后,他们迅速行动,明确了项目团队成员和个人职责。具体说来,胡捷任项目经理,陈曦为需求分析,设计实现由陈伟担任,王辉负责用户测试,系统运维则落在田亮身上。时间紧、压力大、节奏快,这为整个团队带来极大挑战。

站在巨人的肩膀上

项目伊始,团队基于希腊神话给项目取名 Hermes。据了解,Hermes 是古希腊神话中的商人、旅者、小偷和畜牧之神,也是众神的使者。之所以取这个名字,寓意它快速、准确地从 openGauss 数据库获取监控信息并传送给 Prometheus。

作为“使者”,Hermes 一方面对接 Prometheus,另一方面,连接 openGauss 数据库。

据悉,openGauss 数据库把所有监控信息都收集起来,存放在自己的数据表中。“我们使用时就可以非常方便地直接引用这些数据”。

之后,就需要作为采集器的 Hermes 登场。

Hermes 从 openGauss 数据库相应的表、视图和函数中直接采集监控指标,包括 SQL 执行计数、基本运行信息、锁、会话、同步、活跃链接数、快照、复制、检查点、冲突、写进程等。

获取到这些监控指标后,Hermes 将获取到的数据包封装为 Prometheus 所需要的格式。最后,把监控信息传送给 Prometheus。

陈伟说:“我们的工作相当于站在一个巨人的肩膀上,把这个数据拿出来,经过合理的整合,然后再发送给后端使用。如此,节省了我们做采集数据的巨大工作量。因为数据采集最重要的一个地方和最耗工序的一个地方就是如何收集数据,而现在 openGauss 数据库把监控数据整理好了,我们只需要提取出来,补齐拼图的最后一块即可。”

这个过程中,他深切体会到:openGauss 是关系型数据库的代表,深度融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及 ARM 架构上进行了适配与优化,能够满足银行业企业级场景需求。同时,其语法与传统 Oracle、MySQL 数据库兼容度较高,非常易于开展数据库国产化改造工作。

开源监控组件 Hermes

据陈伟介绍,他们在产品设计上,狠下功夫,做到代码精简。在充分分析采集需求的基础上,进行共性归纳和抽取,然后在模型设计时,进行抽象,让公共代码沉淀在基类或接口上。这样,对每一个具体采集需求来说,代码量大大减少。

作为项目设计实现者,陈伟说:“不管怎样实现这个组件,核心一定要满足低耦合、高扩展、可维护、易使用四个特性。

据他介绍,设计产品时,他把 Hermes 作为一个 Prometheus 的 exporter 来进行设计。在实现基本数据采集能力的基础上,再让它主动把数据推送到 Push Gateway,从而更好地适应业务网络隔离场景下的监控数据抓取。这样,完成了 Prometheus 体系的监控数据采集能力。

然后,把 Hermes 视为一个独立服务,提供一整套的 Restful API 接口 ,可以直接对接其他需要监控数据的应用,这样拓展其应用场景,不再局限于 Prometheus。

“Hermes 所有采集配置、推送配置等控制参数,均可以在运行时动态修改、实时生效,这样极大提升其灵活性和易用性。”他补充道。

并且,Hermes 采用 java 语言开发而不是 Prometheus 体系常用的 go 语言,这就打消了很多客户不愿混用多语言的顾虑。

当然,这个产品开发过程并非一帆风顺。

团队遇到的最大挑战在于对 Prometheus 及其 exporter、Push Gateway 等组件的学习和应用。虽然 Prometheus 已经非常成熟,并有着广泛的应用,但是对陈伟他们来说却是全新的。所以,他们需要从 0 到 1 完整的了解 Prometheus 监控体系和各个组件。比如,在向 Prometheus 和 Push Gateway 发送数据时,发送的数据中是否应当包含时间戳是要特别处理的。

此外,团队遇到的另一个主要问题是如何平衡工作和参赛项目。由于项目组成员的日常工作非常繁忙,因此大家都是利用不多的业余时间推进参赛项目。

经过两个月紧锣密鼓的开发,Hermes 赶在作品提交前最终完成。

据悉,它是华夏银行基础技术研究团队完全自主研发、采用 Java 开发、全面采集 openGauss 数据库监控指标的一个开源项目。

靠这款产品,陈伟所在团队从初赛中突围,进入决赛,再从决赛中脱颖而出,最终进入信创“大比武”总决赛。

在总决赛中,Hermes 凭借完全自主研发,充分利用 openGauss 数据库已有的监控指标,以及易拓展、易使用、易维护的优势,得到了评委的一致好评,最终获得金奖。

陈伟表示,这次大赛给他们提供了一个展示的舞台。华夏银行一直致力于信息技术创新工作,成功应用鲲鹏、openEuler、openGauss 等诸多优秀的国产化的创新技术产品,为用户提供优质的金融产品和服务。

融入 openGauss 生态,壮大社区

作为一个刚刚起步的产品,Hermes 还有很多可以提升的地方。比如,现在的很多功能虽然都已经实现,但是在操作上却只能通过 RESTful API 来进行交互,未来可以提供一个简单易用的管理控制台。

接下来,Hermes 会开源并贡献到 openGauss 开源社区。借助社区的力量,陈伟团队将 Hermes 打造为一个更优秀的产品。

如此,一方面,可以为 openGauss 生态增添一款有价值的开源工具,让其监控体系变得更完备;另一方面,有了更多好工具的加持和生态的完善,openGauss 更容易得到企业采用。

更重要的是,Hermes 的加入,能进一步壮大社区力量,吸引更多人参与社区、贡献社区。这样,openGauss 社区就可以更好地持续构建创新能力。

在陈伟团队看来,本次大赛就是一种很好的方式,为社区带来热度,通过持续的刺激带来持续的创新。”Hermes 加入社区后,相当于为 openGauss 社区生态加了一把力。通过产品本身的持续迭代、各种活动不断地提升社区热度,不断有企业、个人加入进来,不断带来新血液”。

陈伟说:“未来,只要 openGauss 不断丰富自己的应用场景,不断迭代,持续修复 bug 以及增加新特性,对企业和开发者的黏性将持续提升,那么参与者越来越多,openGauss 社区势必带来持续的创新和技术发展。”

写在最后

如果说操作系统是基础软件的根,那么数据库则是基础软件皇冠上的明珠。2020 年 6 月 30 日 openGauss 数据库正式开源,据了解,已经有超 70 家企业伙伴加入社区,开发贡献者超过 2000人,有 12 家伙伴基于 openGauss 发布了商业发行版,其中海量数据、云和恩墨、神舟通用等伙伴产品已经在金融、政府、电力、制造等行业核心业务系统部署,并进入加速大规模应用阶段。短暂的一年多发展,可以说 openGauss 不仅成为了这个行业的新兴力量,而且正在大跨步前进。

此外,随着企业数字化转型迈入深水区,企业对核心数据库的升级迫在眉睫,并开始寻找更开放、技术更领先的开源数据库。而 openGauss 为代表的开源数据库相比传统数据库,显然成为企业更好的选择。这不仅有利于企业掌握自主创新主动权,而且能助力企业打造未来竞争新优势。