CN110347377B - 一种Prometheus exporter数据库监控系统 - Google Patents
一种Prometheus exporter数据库监控系统 Download PDFInfo
- Publication number
- CN110347377B CN110347377B CN201910610649.8A CN201910610649A CN110347377B CN 110347377 B CN110347377 B CN 110347377B CN 201910610649 A CN201910610649 A CN 201910610649A CN 110347377 B CN110347377 B CN 110347377B
- Authority
- CN
- China
- Prior art keywords
- database
- exporter
- different
- index
- indexes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
Abstract
本发明提供了一种Prometheus exporter数据库监控系统,包括工厂类(生成不同的数据库指标收集器)、工厂类实现的接口(获取指标并暴露给prometheus registry)、不同数据库指标收集器类及不同数据库指标具体参数值抓取逻辑(类似现有开源exporter,可按需修改),所述工厂类生成不同指标收集器,通过实现公共接口连接目标端获取参数值,将exporter端与多个目标端分离。本发明仅部署一份DB Exporter便可实现多目标动态目标的指标监控;不会带来目标端的资源占用和进程过多的情况;不用考虑生成镜像或docker频繁部署问题;便于扩展,后期运维简单。
Description
技术领域
本发明涉及一种Prometheus exporter数据库监控系统。
背景技术
通常Prometheus exporter与监控目标捆绑在一起,Prometheus基于Pull的工作模式,定期的从Agent端(exporter)收集数据。Prometheus Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。
Exporter大致过程如图1所示,HTTPServer内部实现如下所示:当调用Collector实例register()方法时,会将该实例保存到CollectorRegistry当中,CollectorRegistry负责维护当前系统中所有的Collector实例。HTTPServer在接收到HTTP请求之后,会从CollectorRegistry中拿到所有的Collector实例,并调用其collect()方法获取所有样本,最后格式化为Prometheus的标准输出。
通常Prometheus exporter与监控目标捆绑在一起,Prometheus基于Pull的工作模式,定期的从各Agent端(exporter)收集数据。无论是通过镜像与目标捆绑或是后期手动部署exporter到目标端,对目标端侵入性都比较高,而且用户的误操作可能对exporter进程产生影响。同时,监控涉及诸多层面比如监控linux机器的node_exporter、监控mysql的mysqld_exporter、监控网络等,官网和社区各样的exporter进程如若依据需求都运行在目标端,会使目标端非常臃肿,带来资源消耗,影响目标端性能。
发明内容
有鉴于此,本发明旨在提出一种Prometheus exporter数据库监控系统,以解决上述背景技术中提到的问题。
为达到上述目的,本发明的技术方案是这样实现的:
一种Prometheus exporter数据库监控系统,包括工厂类(生成不同的数据库指标收集器)、工厂类实现的接口(获取指标并暴露给prometheus registry)、不同数据库指标收集器类及不同数据库指标具体参数值抓取逻辑(类似现有开源的exporter,可以自行按需修改),所述工厂类实现该接口,根据不同实例请求转向不同的handlers即不同数据库指标收集器,通过实现公共接口获取数据库连接信息、建立数据库连接,连接相应的目标端,获取不同监控指标样本,实现exporter端与多个目标端的分离。。
进一步的,所述DB Exporter可以收集其它多种类型数据库监控指标,包括但不限于MySQL、Maria DB、Redis、MongoDB。
进一步的,开发Exporter步骤为
定义指标:按照常规的Prometheus要求,定义指标描述符及数据库指标抓取方法和逻辑;
注册指标:定义结构体Targetcollector其维护一个map类型成员map[string]collector.Collector,并实现Prometheus数据采集需要实现的两个接口Collect和Describe,Describe接口用于传递所有可能的指标的定义描述符,Prometheus的注册器调用Collect执行实际的抓取参数的工作,并将收集的数据传递到Channel中返回收集的指标信息来自于Describe中传递;
数据采集;
启动http服务。
进一步的,定义指标中分别创建不同指标抓取类包括但不限于Key、info、request,不同数据库指标类可放在不同包下。
进一步的,注册指标中,collector.Collector为自定义接口,内含一个抽象方法可以通过channel接收抓取的指标数据,不同数据库封装类都要实现该接口并通过自定义结构体类型Targetcollector向collectorRegistry注册。
相对于现有技术,本发明所述的一种Prometheus exporter数据库监控系统具有以下优势:
本发明仅部署一份DB Exporter便可实现多目标动态目标的指标监控;不会带来目标端的资源占用和进程过多的情况;不用考虑生成镜像或docker频繁部署问题;便于扩展,后期运维简单。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为背景技术中Exporter过程;
图2为本发明实施例所述的一种Prometheus exporter数据库监控系统的架构示意图;
图3为本发明实施例所述的工作流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
本发明通过DB Exporter阐述如何做到Exporter与目标端分离及DB Exporter可以收集其它多种类型数据库监控指标如MySQL、Maria DB、Redis、MongoDB等。Exporter与目标端分离,可以很好的处理动态目标(创建/删除),不需考虑每个新增的目标的Exporter如何实现,后续修改不会给运维团队带来麻烦。在Prometheus动态发现功能辅助下,轻松完成活跃目标基础指标数据收集。
如图2所示,一种Prometheus exporter数据库监控系统,包括工厂类(生成不同的数据库指标收集器)、工厂类实现的接口(获取指标并暴露给prometheus registry)、不同数据库指标收集器类及不同数据库指标具体参数值抓取逻辑(类似现有开源的exporter,可以自行按需修改),所述工厂类实现该接口,根据不同实例请求转向不同的handlers即不同数据库指标收集器,通过实现公共接口获取数据库连接信息、建立数据库连接,连接相应的目标端,获取不同监控指标样本,实现exporter端与多个目标端的分离。
开发Exporter大致步骤为定义指标,注册指标,数据采集,启动http服务。
定义指标按照常规的Prometheus要求,定义指标描述符及数据库指标抓取方法和逻辑。分别创建不同指标抓取类如Key、info、request等,不同数据库指标类可放在不同包下。
注册指标,首先定义结构体Targetcollector其维护一个map类型成员map[string]collector.Collector,并实现Prometheus数据采集需要实现的两个接口Collect和Describe,Describe接口用于传递所有可能的指标的定义描述符,Prometheus的注册器调用Collect执行实际的抓取参数的工作,并将收集的数据传递到Channel中返回收集的指标信息来自于Describe中传递。collector.Collector为自定义接口,内含一个抽象方法可以通过channel接收抓取的指标数据。不同数据库封装类(MySQL、Maria DB、Redis和MongoD)都要实现该接口并通自定义结构体类型Targetcollector向collectorRegistry注册。
如图3所示,当Prometheus有新的请求,首先判断请求是否有相应的处理类Handlers,判断请求数据库类型是否注册,如果已注册则通过具体注册指标进行拉取。Prometheus HttpServer可以拉取所有collectorregistry中collector实例。设计点在CollectorRegistry和各样本collector实例之间插入自定义collector接口,接口的实现主要负责收集不同数据库注册collector实例指标值,最终通过Httpserver呈现给Prometheus。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种Prometheus exporter 数据库监控系统,其特征在于:包括工厂类、工厂类实现的接口、不同数据库指标收集器类及不同数据库指标具体参数值抓取逻辑;
所述工厂类作为生成不同的数据库指标收集器,工厂类实现的接口用于获取指标并暴露给prometheus registry,不同数据库指标收集器类及不同数据库指标具体参数值抓取逻辑可以自行按需修改;
所述工厂类实现该接口,根据不同实例请求转向不同的handlers即不同数据库指标收集器,通过实现公共接口获取数据库连接信息、建立数据库连接,连接相应的目标端,获取不同监控指标样本,实现exporter端与多个目标端的分离;
开发Exporter步骤为:
定义指标:按照常规的Prometheus 要求,定义指标描述符及数据库指标抓取方法和逻辑;
注册指标:定义结构体Targetcollector其维护一个map 类型成员map[string]collector.Collector,并实现Prometheus 数据采集需要实现的两个接口Collect和Describe,Describe接口用于传递所有可能的指标的定义描述符,Prometheus的注册器调用Collect执行实际的抓取参数的工作,并将收集的数据传递到Channel中返回收集的指标信息来自于Describe中传递;
数据采集;
启动http 服务。
2.根据权利要求1所述的一种Prometheus exporter 数据库监控系统,其特征在于:利用DB Exporter可以收集其它多种类型数据库监控指标,包括但不限于MySQL、Maria DB、Redis 、MongoDB。
3.根据权利要求2所述的一种Prometheus exporter 数据库监控系统,其特征在于:定义指标中分别创建不同指标抓取类包括但不限于Key、info、request,不同数据库指标类可放在不同包下。
4.根据权利要求3所述的一种Prometheus exporter 数据库监控系统,其特征在于:注册指标中, collector.Collector 为自定义接口,内含一个抽象方法可以通过channel接收抓取的指标数据,不同数据库封装类都要实现该接口并通过自定义结构体类型Targetcollector向collectorRegistry注册。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910610649.8A CN110347377B (zh) | 2019-07-08 | 2019-07-08 | 一种Prometheus exporter数据库监控系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910610649.8A CN110347377B (zh) | 2019-07-08 | 2019-07-08 | 一种Prometheus exporter数据库监控系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110347377A CN110347377A (zh) | 2019-10-18 |
CN110347377B true CN110347377B (zh) | 2023-04-18 |
Family
ID=68178483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910610649.8A Active CN110347377B (zh) | 2019-07-08 | 2019-07-08 | 一种Prometheus exporter数据库监控系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110347377B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051125B (zh) * | 2019-12-27 | 2022-11-18 | 微民保险代理有限公司 | 自定义监控指标的监控视图绘制方法、装置及计算机设备 |
CN111930590A (zh) * | 2020-07-13 | 2020-11-13 | 上海森亿医疗科技有限公司 | 计算机软硬件资源的实时监控系统 |
CN112380097A (zh) * | 2020-11-18 | 2021-02-19 | 厦门市美亚柏科信息股份有限公司 | 一种基于Prometheus自定义监控指标的方法 |
CN112965874B (zh) * | 2021-03-04 | 2023-02-28 | 浪潮云信息技术股份公司 | 一种可配置的监控告警方法及系统 |
CN113055490B (zh) * | 2021-03-24 | 2022-10-11 | 杭州群核信息技术有限公司 | 数据的存储方法及装置 |
CN113342373B (zh) * | 2021-05-31 | 2022-04-22 | 杭州沃趣科技股份有限公司 | 一种用于Prometheus通用采集器的实现方法和系统 |
CN113377816B (zh) * | 2021-06-11 | 2022-10-25 | 重庆农村商业银行股份有限公司 | 一种分布式数据存取系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109067862A (zh) * | 2018-07-23 | 2018-12-21 | 北京邮电大学 | API Gateway自动伸缩的方法与装置 |
CN109245931A (zh) * | 2018-09-19 | 2019-01-18 | 四川长虹电器股份有限公司 | 基于kubernetes的容器云平台的日志管理和监控报警的实现方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10110600B1 (en) * | 2017-07-13 | 2018-10-23 | Cyberark Software Ltd. | Dynamically learning and securing an asset-to-asset cloud communication environment |
CN107844399B (zh) * | 2017-10-10 | 2020-06-16 | 武汉斗鱼网络科技有限公司 | 自动监控数据库服务的方法、存储介质、电子设备及系统 |
CN108920283A (zh) * | 2018-08-06 | 2018-11-30 | 成都知道创宇信息技术有限公司 | 基于Prometheus性能监控系统的服务器保护方法 |
CN109743199A (zh) * | 2018-12-25 | 2019-05-10 | 中国联合网络通信集团有限公司 | 基于微服务的容器化管理系统 |
-
2019
- 2019-07-08 CN CN201910610649.8A patent/CN110347377B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109067862A (zh) * | 2018-07-23 | 2018-12-21 | 北京邮电大学 | API Gateway自动伸缩的方法与装置 |
CN109245931A (zh) * | 2018-09-19 | 2019-01-18 | 四川长虹电器股份有限公司 | 基于kubernetes的容器云平台的日志管理和监控报警的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110347377A (zh) | 2019-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347377B (zh) | 一种Prometheus exporter数据库监控系统 | |
CN111414416A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN110457178A (zh) | 一种基于日志采集分析的全链路监控告警方法 | |
JP2003263334A (ja) | 機器診断方法、遠隔試験装置及びネットワーク機器 | |
CN113542365B (zh) | 基于多场景应用的端边物联网平台架构 | |
KR102328938B1 (ko) | 전자 시스템들에서의 로그 데이터의 관리 | |
CN110515855B (zh) | 一种应用程序的模拟控制方法、服务器及系统 | |
CN113225339B (zh) | 网络安全监测方法、装置、计算机设备及存储介质 | |
CN109614253A (zh) | 一种实现远程过程调用的方法及装置 | |
CN111865914B (zh) | 用于检查云主机健康状态的系统、方法、设备及存储介质 | |
JP7402321B2 (ja) | データ処理方法及び装置 | |
CN103516767A (zh) | 软件跨云部署机制及系统 | |
CN113055490B (zh) | 数据的存储方法及装置 | |
CN108829563B (zh) | 一种告警方法和告警装置 | |
KR20180089829A (ko) | IoT 기기의 가시성을 확보하기 위한 장치 및 그를 위한 컴퓨터 프로그램 | |
CN101635649B (zh) | 服务器装置及其控制方法 | |
CN112115140B (zh) | 一种通用的全文搜索引擎实时数据同步方法及装置 | |
WO2023044675A1 (zh) | 一种获取边缘数据的方法、连接器及数据平台 | |
CN111522642A (zh) | 风电机组状态监测数据的获取方法、查询方法及电子设备 | |
CN114710527B (zh) | 分布式智能驾驶数据的采集系统、方法及可读存储介质 | |
CN116932332B (zh) | Dpu运行状态监控方法及装置 | |
CN117714317A (zh) | 数据采集方法、装置、设备及存储介质 | |
CN114884844B (zh) | 流量录制方法及系统 | |
Hermanto et al. | Implementation of Service Level Measurement Based on System Uptime Sensor of Network Device in Internet Connection Service | |
KR100493899B1 (ko) | 홈 네트워크 내 디바이스의 정보 관리 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |