基于salt的数据库性能自动化监控系统的制作方法

文档序号:11216142阅读:477来源:国知局
基于salt的数据库性能自动化监控系统的制造方法与工艺

本发明属于数据库监控领域,主要应用于互联网行业各种类型的数据库的性能监控。



背景技术:

对于互联网公司而言,数据库应用越来越普及,为了提高数据库可用性,需要为数据库部署监控,除了常规的功能监控,还需要对数据库性能进行监控,从而提高监控精度,及时发现数据库性能问题,保证数据库服务质量。

现有的数据库监控系统及方法的缺点是:

(1)操作繁杂,维护成本高:操作步骤繁多,需要大量的人力维护,维护成本高;

(2)自动化程度低:几乎全部需要人力操作,缺乏自动化,效率低下;

(3)不适合大规模数据库监控:在大规模数据库情况下,使用现由的监控方法,几乎很难沐足监控需求;

(4)功能单一:现有监控方案,功能比较单一。



技术实现要素:

本发明的目的在于针对现有技术的不足,提供一种基于salt的数据库性能自动化监控系统,可以实现各种数据库性能监控自动化,基本没有人工成本,通用性强,并且使用非常方便。

本发明的目的是通过以下技术方案来实现的:一种基于salt的数据库性能自动化监控系统,通过采集数据库服务进程对应的cpu数据来监控数据库性能,该系统包括salt管理端、数据库节点和zabbix服务端;

salt管理端是管理salt客户端的服务器,包括salt管理模块、元信息管理模块和发送监控数据模块;salt管理端通过salt客户端采集数据库节点上数据库服务进程的cpu信息,发送到zabbix服务端。

数据库节点是部署数据库服务的服务器,包括采集性能监控数据模块;不同的数据库服务,端口唯一,每个数据库节点上部署一个salt客户端;数据库节点根据salt管理端传入的参数,调用该节点上的采集脚本,采集性能监控数据。

zabbix服务端是支持短信和邮件的监控服务器,包括监控告警和展示模块;zabbix服务端接收监控数据,并根据告警策略进行告警,以及展示监控数据的趋势图。

进一步地,所述salt管理模块包括:

在所有数据库节点部署salt客户端,salt管理端部署在单独的一台服务器上。

定期调用salt管理端接口,检查所有的数据库节点上的salt客户端是否注册到salt管理端;如未注册,调用salt管理端接口,注册所述salt客户端;如注册失败,则发送通知给管理员。可选择注销某个数据库节点的salt客户端。

在salt管理端,定期检测salt客户端是否通达,如不通,发送通知给管理员。

进一步地,所述元信息管理模块包括:

salt管理端定期调用元信息管理模块,及时获取最新的元信息;所述元信息包括数据库节点主机名、数据库节点ip、数据库端口和数据库进程号以及数据库标识符。

首先,salt管理端获取所有的数据库节点主机名;然后,针对每个数据库节点,salt管理端通过发送指令给salt客户端,获取每个数据库节点上所有的数据库进程信息;通过数据库进程信息,解析得到数据库端口和数据库进程号;同时,根据数据库节点主机名获取数据库节点ip。所述数据库节点主机名、数据库节点ip、数据库端口和数据库进程号保存在元信息文件中。接下来,在salt管理端,扫描元信息文件,传入数据库端口,数据库节点ip,以及zabbix服务端的用户名密码,调用zabbix服务端接口,自动创建相应的所述数据库主机。同时,根据所述数据库主机,解析得到相应的监控模板,根据该监控模板,调用zabbix服务端接口,自动挂载相应的监控模板,包括cpu采集项、cpu报警项和cpu趋势图。如果某个所述数据库主机不需要cpu监控,可以采用手动方式,在zabbix服务端页面卸载对应的监控模板。也可以根据具体需求,调用zabbix服务端功能,调整cpu报警项设置。

进一步地,所述采集性能监控数据模块包括:

需要传入的参数:数据库节点主机名,数据库进程号;

在salt管理端,定期调用元信息管理模块之后,得到所有的数据库节点主机名,以及对应的数据库进程号。然后,根据这些信息,salt管理端发送指令到所述数据库节点对应的salt客户端,首先判断是否存在性能监控脚本,如果存在,那么不需要分发监控脚本,否则,分发监控脚本:然后,在salt管理端上,针对每个数据库节点上的每个数据库进程,采集性能监控数据;采集到的性能监控数据保存在salt管理端本地文件中,称为监控数据文件。

进一步地,所述发送监控数据模块包括:调用zabbix服务端接口,发送所述监控数据文件到zabbix服务端,如果发送监控数据成功,那么需要清空所述监控数据文件;否则需要通知管理员处理。

进一步地,所述监控告警和展示模块包括:

zabbix服务端接收和存储所述监控数据,分析所述监控数据并产生告警,以及通过zabbix服务端的趋势图展示监控数据。调用zabbix服务端自身功能,为数据库性能监控配置短信接收人和邮件接收人,方便第一时间接收告警信息和处理数据库性能问题。

本发明的有益效果如下:

(1)监控部署非常简单:只需要部署zabbix服务端、salt管理端和salt客户端和制定监控模板,操作简单。

(2)维护成本低:以上组件部署完毕后,对于新增加的数据库服务,不需要维护监控,可以实现自动采集和发送监控数据,维护成本为零。

(3)性能监控准确:通过数据库服务占用的cpu反映数据库性能,可以准确发现性能问题。

(4)支持多种类型数据库:适用于对于关系型数据库和非关系型数据库。

(5)易扩展:对于大规模数据库节点,只需要部署多个salt管理端,分别管理各自的salt客户端即可。扩展容易并且可行。

附图说明

图1是本发明基于salt的数据库性能自动化监控系统的总体架构图;

图2是本发明各个模块相互调用的流程图。

具体实施方式

图1是本发明基于salt的数据库性能自动化监控系统的总体架构图。总体上包括三部分:salt管理端、数据库节点和zabbix服务端,每个数据库节点部署一个salt客户端。salt管理端通过salt客户端获取所有数据库进程,然后调用zabbix服务端接口注册数据库主机,接下来,salt管理端通过salt客户端采集所述数据库节点上每个数据库进程对应的监控数据,最后发送所述监控数据到zabbix服务端。

图2是本发明各个模块相互调用的流程图。首先,salt管理模块注册所有数据库节点对应的salt客户端,然后通过salt客户端获取所有数据库节点上的数据库进程,根据所述数据库进程,解析得到数据库进程号和数据库端口号,然后,salt管理端通过salt客户端采集对应的cpu信息;最后,salt管理端调用zabbix服务端接口,发送到zabbix服务端。

下面详细介绍各模块的实现过程:

(1)salt管理端

salt管理端是管理salt客户端的服务器,用于注册和注销salt客户端,发送指令到salt客户端等。这里的指令一般是通过一个或者多个linux命令完成的操作。salt管理端包括salt管理模块、元信息管理模块和发送监控数据模块,功能包括管理salt客户端,分发指令和文件,获取数据库节点上的数据库进程信息,以及发送监控数据到zabbix服务端。

salt管理端通过salt客户端采集数据库节点上数据库服务进程的cpu信息,发送到zabbix服务端。

(2)数据库节点

数据库节点是指部署数据库服务的服务器,这些数据库服务包括常用的关系型数据库和非关系型数据库,不同的数据库服务,端口唯一。

主要包括采集性能监控数据模块,根据salt管理端传入的参数,调用该节点上的采集脚本,采集性能监控数据。

每个数据库节点上,都需要部署一个salt客户端。salt客户端用于接收salt管理端的指令和文件,执行相应的操作,返回结果给salt管理端。

(3)zabbix服务端

zabbix服务端是一种支持短信和邮件的监控服务器,接收监控数据,并根据告警策略进行告警,以及展示监控数据的趋势图。

包括监控告警和展示模块,主要功能是接收和存储监控数据,以及监控告警。

数据库主机是zabbix服务端注册的数据库服务标识,每个数据库服务,数据库主机采用端口_主机方式命名,比如3306_10.1.1.11,表示10.1.1.11数据库节点上的3306数据库服务。

监控模板是指根据数据库的接口,设置采集项、触发器和趋势图,用于挂载到数据库主机中。

各子模块具体实现如下:

(1)salt管理模块

主要功能是在所有数据库节点部署salt客户端,salt管理端部署在单独的一台服务器上。

定期调用salt管理端接口,检查所有的数据库节点上的salt客户端是否注册到salt管理端,检测方式如下:

#salt‐key‐l‐acc|grep‘数据库节点主机名’

如果返回值为假,需要调用salt管理端接口,注册所述salt客户端,注册方式如下:

#salt‐key–a–y‘数据库节点主机名’

否则,不需要调用注册所述salt客户端。如果注册失败,那么发送通知给管理员处理。

如果需要注销某个数据库节点的salt客户端,需要手动执行如下指令:

#salt‐key–d‘数据库节点主机名’

所有的数据库节点对应的salt客户端全部注册到salt管理端后,salt管理端就可以发送指令和文件给salt客户端,完成特定的操作。

并且,在salt管理端,定期检测salt客户端是否通达,检测方式如下:

#salt'数据库节点主机名'cmd.run'exit'

如果返回值为真,说明该数据库节点主机名所述salt客户端可以通达;否则,需要发送通知给管理员,需要人工处理。

(2)元信息管理模块

这里的元信息包括数据库节点主机名、数据库节点ip、数据库端口和数据库进程号以及数据库标识符。

salt管理端定期调用元信息管理模块,及时获取最新的元信息。

首先,salt管理端获取所有的数据库节点主机名:获取方式如下:

#salt‐key–l|grep数据库节点主机名前缀

数据库节点主机名前缀是数据库节点主机名的前缀字符,基于此可以过滤得到所有的数据库节点。

然后,针对每个数据库节点,salt管理端通过发送指令给salt客户端,获取每个数据库节点上所有的数据库进程信息,命令如下:

#salt‘数据库节点主机名’cmd.run‘ps–ef|egrep数据库标识符|egrep–vgrep’

数据库标识符是数据库类型的标识,比如,mysql数据库的数据库标识符为mysqld。

通过数据库进程信息,可以解析得到数据库端口和数据库进程号。

同时,根据数据库节点主机名获取到数据库节点ip。

所述数据库节点主机名、数据库节点ip、数据库端口和数据库进程号保存在元信息文件中。

接下来,在salt管理端,扫描元信息文件,传入数据库端口,数据库节点ip,以及zabbix服务端的用户名密码,调用zabbix服务端接口,自动创建相应的所述数据库主机。同时,根据所述数据库主机,解析得到相应的监控模板,根据该监控模板,调用zabbix服务端接口,自动挂载相应的监控模板,包括cpu采集项,cpu报警项和cpu趋势图。

如果某个所述数据库主机不需要cpu监控,可以采用手动方式,在zabbix服务端页面卸载对应的监控模板即可。

也可以根据具体需求,调用zabbix服务端功能,调整cpu报警项设置。

(3)采集性能监控数据模块

需要传入的参数:数据库节点主机名,数据库进程号

在salt管理端,定期调用元信息管理模块之后,得到所有的数据库节点主机名,以及对应的数据库进程号。然后,根据这些信息,salt管理端发送指令到所述数据库节点对应的salt客户端,首先判断是否存在性能监控脚本,指令如下:#salt‘数据库节点主机名’cmd.run‘ls–l/path/to/监控脚本’

如果返回为真,那么不需要分发监控脚本,否则,通过如下指令分发监控脚本:

#salt'数据库节点主机名'cp.get_filesalt://监控脚本/path/to/监控脚本

然后,在salt管理端上,针对每个数据库节点上的每个数据库进程,采集性能监控数据指令如下:

#salt‘数据库节点主机名’cmd.run‘python/path/to/监控脚本数据库进程号’

说明,采用python编写监控脚本,执行该监控脚本,需要传入一个参数:数据库进程号

所述监控脚本采集数据库进程占用的cpu信息的核心逻辑为:

p=psutil.process(int(pid))

cpuusage=p.cpu_percent(interval=1)

该监控脚本依赖python的psutil模块。pid是该脚本需要传入的参数,表示数据库进程号。

采集到的性能监控数据保存在salt管理端本地文件中,称之为监控数据文件。(4)发送监控数据模块

每当调用采集性能监控数据模块结束后,本模块将被调用,本模块功能是调用zabbix服务端接口,发送所述监控数据文件到zabbix服务端,指令如下:

#zabbix_sender‐‐zabbix‐serverzabbix服务端ip‐‐portzabbix服务端端口‐‐input‐file监控数据文件‐‐with‐timestamps

如果发送监控数据成功,那么需要清空所述监控数据文件;否则需要通知管理员处理。

(5)监控告警和展示模块

该模块可选。zabbix服务端接收和存储所述监控数据,分析所述监控数据并产生告警,以及通过zabbix服务端的趋势图展示监控数据。

说明:调用zabbix服务端自身功能,为数据库性能监控配置短信接收人和邮件接收人,方便第一时间接收告警信息和处理数据库性能问题。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1