基于salt的数据库错误日志监控系统的制作方法

文档序号:11216387阅读:263来源:国知局
基于salt的数据库错误日志监控系统的制造方法与工艺

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



背景技术:

对于互联网公司而言,数据库应用越来越普及,为了提高数据库可用性,需要为数据库部署监控。常规的功能监控无法全面发现数据库故障,因此,需要对数据库错误日志进行监控,及时发现数据库问题,保证数据库服务质量。

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

(1)维护成本高:操作步骤复杂,需要较多人力,维护成本比较高

(2)缺乏自动化:几乎全部需要手动操作,缺少自动化,效率低下

(3)监控方案复杂:每次添加监控,会产生大量无用报警,添加操作很复杂,缺乏简便性



技术实现要素:

本发明的目的在于针对现有技术的不足,提供一种基于salt的数据库错误日志监控系统,可以实现多种数据库错误日志监控。

本发明的目的是通过以下技术方案来实现的:一种基于salt的数据库错误日志监控系统,包括salt管理端、数据库节点、存储节点和zabbix服务端;

salt管理端是管理salt客户端的服务,包括salt管理模块、元信息管理模块和采集监控数据模块;salt管理端管理salt客户端,分发指令和文件,获取数据库节点上的数据库进程信息,以及采集监控数据。

数据库节点是指部署数据库服务的服务器,包括错误日志管理模块;不同的数据库服务,端口唯一,每个数据库节点上部署一个salt客户端;数据库节点定期切割错误日志,发送错误日志到salt管理端。

存储节点用于存储错误日志,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服务端接口,自动挂载相应的监控模板,包括错误日志采集项、错误日志报警项和错误日志趋势图。如果某个所述数据库主机不需要错误日志监控,可以采用手动方式,在zabbix服务端页面卸载对应的监控模板即可。也可以根据具体需求,调用zabbix服务端功能,调整错误日志报警项设置。

进一步地,所述错误日志管理模块包括:

需要传入的参数为:数据库节点主机名、错误日志文件名;

salt管理端定期调用该模块,切割错误日志和发送错误日志到salt管理端。

salt管理端根据传入的参数,通过salt客户端,查看错误日志文件大小,如果错误日志文件大小超过2mb,那么切割所述错误日志文件,同时,发送归档错误日志文件到salt管理端。如果错误日志文件大小小于2mb,不需要切割和发送错误日志文件。

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

需要传入的参数为:据库节点主机名、错误日志文件名;

salt管理端定期发送指令到salt客户端,salt客户端执行指令,采集错误日志数据,返回给salt管理端。所述指令获取错误日志文件中含有关键字error的行,记录行数,通过监控行数变化监控错误日志。

然后,按照如下格式,把监控数据写入到监控数据文件:数据库主机、采集项、时间戳、采集值。所述采集项是错误日志采集项,是在错误日志监控模板里定义的。时间戳是执行采集监控数据的当前时间戳。采集值是含有关键字error的行数。

进一步地,所述存储错误日志模块包括:

需要传入的参数:存储节点主机名、归档错误日志文件名和存储路径;

salt管理端根据所述参数,通过salt客户端,把归档错误日志文件传入到存储节点指定存储路径下,如果操作失败,发送通知给管理员处理;如果操作成功,那么记录如下信息到错误日志元信息表中:存储节点主机名、存储路径和错误日志文件名,便于管理员查阅归档错误日志文件信息。

进一步地,所述发送监控数据模块包括:

需要传入的参数为:zabbix服务端主机名、zabbix服务端端口和监控数据文件;在salt管理端,调用zabbix服务端接口,传入所述参数,发送监控数据到zabbix服务端。

进一步地,所述监控数据告警模块包括:在zabbix服务端配置短信和邮件接收人信息,并且设置告警策略,然后zabbix服务端在接收到监控数据后,分析监控数据并产生告警,发送给指定的接收人。

本发明的有益效果如下:

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

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

(3)准确度高:本方法监控错误日志,可以准确反映错误日志实际情况,方法简单并且准确。

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

附图说明

图1是本发明基于salt的数据库错误日志监控系统的总体架构图;

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

具体实施方式

图1是本发明基于salt的数据库错误日志监控系统总体架构图。总体包括四部分:salt服务端、数据库节点、zabbix服务端和存储节点。salt服务端通过salt客户端获取所有数据库节点的数据库进程,根据所述数据库进程解析得到数据库端口,然后调用zabbix服务端接口自动注册数据库主机,根据所述数据库进程,定期进行错误日志切割和采集错误日志,在salt管理端分析每个数据库进程相应的错误日志,得到监控数据,发送所述监控数据到zabbix服务端,最后,salt管理端通过存储节点上的salt客户端,发送所述错误日志到存储节点。

图2是本发明各个模块相互调用的流程图。首先,调用salt管理模块,在salt管理端注册所有数据库节点对应的salt客户端,然后通过salt客户端,调用元信息管理模块,获取所有数据库节点上的数据库进程,解析所述数据库进程,得到所述错误日志文件路径,通过salt客户端,定期调用错误日志管理模块,切割和收集错误日志,并发送到salt管理端,同时发送所述错误日志到所述存储节点;通过对所述错误日志分析,调用采集监控数据模块,产生所述监控数据;然后调用发送监控数据模块,发送监控数据到zabbix服务端,调用监控数据告警模块,发送错误日志告警给管理员。

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

(1)salt管理端

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

(2)数据库节点

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

主要包括错误日志管理模块,该模块功能主要是定期切割错误日志,发送错误日志到salt管理端。

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

(3)存储节点

存储节点用于存储错误日志,salt管理端收集到所有数据库节点的所有数据库错误日志后,通过salt客户端,发送到存储节点。所述错误日志信息包括:错误日志文件名、存储路径、存储节点主机名,保存在错误日志元信息表里,用于查阅历史错误日志。

(4)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数据库的数据库标识符为mysql,redis数据库的数据库标识是redis‐server。

解析数据库进程可以得到数据库端口和数据库错误日志文件名。同时,根据数据库节点主机名获取到数据库节点ip。所述数据库节点主机名、数据库节点ip、数据库端口和数据库错误日志文件名保存在元信息文件中。

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

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

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

(3)错误日志管理模块

需要传入的参数为:数据库节点主机名、错误日志文件名

salt管理端定期调用该模块,切割错误日志和发送错误日志到salt管理端。

salt管理端根据传入的参数,通过salt客户端,查看错误日志文件大小,如果错误日志文件大小超过2mb,那么切割所述错误日志文件,同时,发送归档错误日志文件到salt管理端。查看错误日志文件大小指令如下:

#salt‘数据库节点主机名’cmd.run‘du–s错误日志文件名’

说明:所述错误日志文件名是绝对路径,不是相对路径。

切割错误日志文件指令如下:

#salt‘数据库节点主机名’cmd.run‘cp错误日志文件名错误日志文件名.当前日期&&echo>错误日志文件名’

说明:当前日期是所述指令执行时候的日期,格式为yyyy‐mm‐dd

发送归档错误日志文件到salt管理端指令如下:

#salt"数据库节点主机名"cp.push错误日志文件名.当前日期

如果错误日志文件大小小于2mb,不需要切割和发送错误日志文件。

(4)采集监控数据模块

需要传入的参数为:据库节点主机名、错误日志文件名

salt管理端定期发送指令到salt客户端,salt客户端执行指令,采集错误日志数据,返回给salt管理端。所述指令如下:

#salt‘数据库节点主机名’cmd.run‘egrep–ierror错误日志文件名|wc–l’

说明:错误日志文件名是绝对路径,不是相对路径

所述指令获取错误日志文件中含有关键字error(不区分大小写)的行,记录行数,通过监控行数变化监控错误日志,该监控方法既简单又高效。

然后,按照如下格式,把监控数据写入到监控数据文件:

数据库主机采集项时间戳采集值

所述采集项是错误日志采集项,是在错误日志监控模板里定义的。

时间戳是执行采集监控数据的当前时间戳。

采集值是上文所述行数,如果没有含有error(不区分大小写)关键字,所述行数为0。

(5)存储错误日志模块

需要传入的参数:存储节点主机名、归档错误日志文件名和存储路径

salt管理端根据所述参数,通过salt客户端,把归档错误日志文件传入到存储节点指定存储路径下,操作方式如下:

#salt'存储节点主机名'cp.get_filesalt://归档错误日志文件名/path/to/归档错误日志文件名

说明:/path/to/表示存储路径

操作完成后,如果返回为假,发送通知给管理员处理;如果返回值为真,那么记录如下信息到错误日志元信息表中:存储节点主机名、存储路径和错误日志文件名,便于管理员查阅归档错误日志文件信息。

(6)发送监控数据模块

需要传入的参数为:zabbix服务端主机名、zabbix服务端端口和监控数据文件;

采集监控数据模块之行结束后,产生所述监控数据文件。

在salt管理端,调用zabbix服务端接口,传入所述参数,发送监控数据到zabbix服务端,操作方式如下:

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

zabbix服务端ip和zabbix服务端端口可以从zabbix服务端配置文件里获取到。

(7)监控数据告警模块

本模块可选。需要在zabbix服务端配置短信和邮件接收人信息,并且设置告警策略,然后zabbix服务端在接收到监控数据后,分析监控数据并产生告警,发送给指定的接收人。

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