一种数据库监控方法及装置的制作方法

文档序号:6613163阅读:333来源:国知局
专利名称:一种数据库监控方法及装置的制作方法
技术领域
本发明涉及数据库技术,特别是涉及一种数据库监控方法及装置。
背景技术
在各种业务应用中,通常应用系统都会部署数据库来存储和管理整个系统 的数据,那么对数据库系统运行情况的监控就变得十分重要。对于运行在操作 系统上的各种数据库系统,数据库表空间使用百分比、》兹盘排序空间使用大小、 数据库运行情况、锁、阻塞以及数据库服务器的负载等,都是常用的监控对象。
对于以上监控对象,传统的监控方式是对每个监控对象设置一个相应的 阀值,当监控数据超过阀值时立刻报警。例如,对于数据库表空间使用百分比, 如果设定阀值为90%,则表示当数据库某个表的空间使用率超过90%,将会通 过邮件或者手机短信方式进行报警;对于数据库的锁监控,如果数据库中的锁 的个数超过一个阀值,比如100个,则将通过邮件或者手机短消息方式报警通 知数据库管理人员。
上述传统的数据库监控方式对于所有的数据库监控对象,不论对象的类别 或特征,都采用统一的超过对应阀值就报警的方式进行监控,这种监控方式存 在以下弊端数据库中的一些监控对象,例如锁个数、阻塞个数情况、数据库 负载等,这些监控对象具有瞬间性,即指在某一个时刻数据库中存在的锁的个 数超过阀值,但很快这些锁都消失了,这是很正常的情况,是没有必要报警的, 但釆用以上监控方式就会立即通知数据库管理员。数据库的阻塞个数情况、数 据库负载也具有这种瞬间性特征。所以采用传统方法的监控,误报较多,报警 的准确率相对较低。

发明内容
本发明所要解决的技术问题是提供一种数据库监控方法及装置,以解决传 统的数据库监控方法对于具有瞬间性的监控对象,存在误报较多、报警准确率 较低的问题。
为解决上述技术问题,根据本发明提供的具体实施例,本发明公开了以下技术方案
. 一种数据库监控方法,包括 对每个需要双校验的监控对象设置标志位,用于标识采集数据是否超过阀
值;
周期性地釆集监控对象数据,并与相应的阀值进行比较;如果超过阀值, 则当需要双校验时读取相应的标志位,根据该标志位判断上一次采集的数据是 否也超过阀值,如果是,则发出报警消息;
然后将当前的比较结果更新到该标志位。
优选的,所述方法还包括根据数据采集频率设置校验次数。
其中,所述当前比较结果包括采集数据超过阀值和不超过阀值两种结果。
所述方法还包括对不需要双校验的监控对象,如果采集数据超过相应阀
值,则直接发出报警消息。
一种数据库监控装置,包括
标志位存储单元,用于对每个需要双校验的监控对象设置标志位,用来标 识采集数据是否超过阀值;
数据采集与阀值判断单元,用于周期性地采集监控对象数据,并与相应的 阀值进行比较;如果超过阀值,则当需要双校验时调用消息发送单元进行双校 验,然后将当前的比较结果更新到标志位存储单元中对应的标志位;
消息发送单元,用于从标志位存储单元读取相应的标志位,根据该标志位 判断上一次采集数据是否也超过阀值,如果是,则发出报警消息。
其中,所述数据采集与阀值判断单元对不需要双校验的监控对象,当采集 数据超过相应阀值时,直接调用消息发送单元发出报警消息。
其中,所述消息发送单元通过数据采集与阀值判断单元传入的不同参数个 数来判断是否进行双校验。
本发明还提供了一种数据库方式下的数据库监控方法,包括
周期性地采集监控对象数据,并保存到数据库;
对需要双校验的监控对象,查询数据库获取监控对象的最新两条记录,并 分别与相应的阀值进行比较;
如果两条记录的数据都超过阀值,则发出报警消息。优选的,所述方法还包括根据数据采集频率设置从数据库获取监控对象
记录的数量。
一种数据库监控装置,包括
数据采集单元,用于周期性地采集监控对象数据;
数据库,用于保存数据采集单元采集的监控对象数据;
阀值判断单元,用于对需要双校验的监控对象,查询数据库获取监控对象 的最新两条记录,并分别与相应的阀值进行比较;如果两条记录的数据都超过 阀值,则调用消息发送单元;
消息发送单元,用于发出报警消息。
其中,所述阀值判断单元根据数据采集频率设置从数据库获取监控对象记 录的数量。
根据本发明提供的具体实施例,本发明公开了以下技术效果
针对数据库中的锁、阻塞、数据库服务器负载等具有瞬间性的监控对象, 本发明采用多次校验的方式,如果监控对象连续多次都超过相应阀值,才会发 出报警消息,从而减少了误报的次数,提高了报警的准确度,为数据库的安全 运行提供了有力的保障。其中,所述校验次数是根据数据采集的频率而设定。
本发明提供了两种实现方式, 一种是针对运行在Unix或Linux操作系统 上的数据库,通过编写shell脚本来对数据库的运行情况进行监控。以双校验 为例,首先由数据采集与阀值判断单元采集监控对象数据,并与相应的阀值比 较,如果超过阀值,则当需要进行双校验时,调用消息发送单元从标志位存储 单元获取对应的标志位,如果该标志位标识的上一次采集数据也超过阀值,则 发出报警消息。然后,由数据采集与阀值判断单元更新标志位,保证消息发送 单元每次读取的是上一次的比较结果。
另 一种实现方式是采用数据库方式,数据采集单元将采集到的监控对象数 据都保存到数据库中,对于需要双校验的监控对象,阀值判断单元从数据库查 询两条最新的记录,如果这两条记录的数据都超过阀值,就调用消息发送单元 发出报警消息。
优选的,由于在实际应用中,对很多对象的监控都需要用到发送消息的功 能,如果在每个监控脚本中都加入消息发送功能,将给程序的维护带来极大的困难。因此,为增强脚本的维护性,对所述消息发送单元进行了封装,用一个 独立的发送消息脚本来实现。而且,所述封装的消息发送单元同时支持常规发 送和双校验发送两种方式,通过传入脚本的不同参数个数来区别。


图l是本发明所述脚本方式下的数据库监控方法实施例流程图2是本发明所述脚本方式下的数据库监控装置实施例结构图3是图2中数据采集与阀值判断单元202的处理流程图4是图2中消息发送单元203的处理流程图5是本发明所述数据库方式下的数据库监控方法实施例流程图6是本发明所述数据库方式下的数据库监控装置实施例结构图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。
针对数据库中的锁、阻塞、数据库服务器负载等具有瞬间性的监控对象,
本发明实施例采用多次校验的方式,如果监控对象连续多次都超过相应阀值, 才会发出报警消息通知数据库管理人员,从而减少了误报的次数,提高了报警 的准确度,为数据库的安全运行提供了有力的保障。
其中,所述锁的概念是指为了防止对象被两个不同的用户同时修改,数据 库创建了锁这种数据结构来实现锁定机制。这种机制使用在数据库中称为排队 的队列结构,以串行的方式执行锁。"排队"是锁的一种数据结构,这种机制 基于先到先服务原则,以串行的方式进行工作。如果数据库中的锁过多,即很 多锁没有及时释放,那么也会极大地影响数据库的性能。
阻塞是由锁引起的,当在一个对象或者表的行级想加上两种不兼容的锁 时,根据先到先服务原则,先提出加锁的会话将会获得锁资源,执行相关的操 作,而后来的会话,将会进入锁队列,开始出现等待,这种等待就是阻塞。如 果阻塞形成的队列过长,将会影响数据库的性能和应用服务器的性能。
数据库负载是一个表示数据库性能的综合指标。
数据库中存在一些具有瞬间性特性的监控对象,其中锁、阻塞、数据库负
7载是最具有代表性的,下面将以锁、阻塞、数据库负载的监控为例进行说明。 本发明实施例采用了多次校验的方式,多次棟验是指连续多次检验监控对象数 据是否超过阀值,校验的次数与数据采集的频率有关,下面以双次校-验为例。 本发明实施例还提供了两种监控方式, 一种是脚本方式, 一种是数据库方式, 下面分别i兌明。
对于脚本方式,以运行在Un i x或L i nux操作系统上的or a c 1 e数据库为例, 通过编写一些shell脚本来对数据库的运行情况进行监控。其中,脚本是一种 编程语言,shell脚本是其中的一种脚本语言。
参照图1,是所述脚本方式下的数据库监控方法实施例流程图。
步骤IOI,对需要进行双校验的监控对象设置标志位,该标志位用来标识 采集数据是否超过阀值。本实施例中,以l表示超过阀值,以Q表示未超过。
步骤102,周期性地采集监控对象数据,并与相应的阀值进行比较。针对 某个监控对象,首先运行一系列Unix或Linux命令,并把命令的输出结果作 为采集数据保存到文件中;然后将采集数据的数值如锁的个数,与对应该监控 对象的阀值比较,如果超过阀值,则继续步骤103,如果未超过,则继续步骤 105。
步骤103,在当前采集的数据超过阀值时,读取相应的标志位信息。如果 为1,表明上一次采集的数据也超过了阀值,执行步骤104报警;如果为0, 表明上一次采集的数据未超过阀值,当前是第一次超过阀值,还需要继续下一 次的数据采集才能判断是否需要报警,转到步骤105。
步骤104,当监控对象的数值连续两次都超过阀值,就会以邮件、手机短 信等方式发出报警消息,通知数据库管理人员来处理,然后继续执行步骤105。
步骤105,在完成上述所有的处理,最后需要更新标志位,将当前的比较 结果记录到标志位。如果当前釆集的数据超过了阀值,则更新标志位信息为1; 如果当前采集的数据未超过阀值,则更新标志位信息为0。即无论比较结果如 何,都需要更新相应的标志位,保证每次读取标志位得到的是上一次的比较结 果。
上述两次校验的监控流程也适用于多次校验的情况,根据数据采集的频 率,也可能进行连续三次或更多次的校验,此时需要增加标志位来保存上几次的比较结果。
上魂流程说明了对双校-验监控对象的监控过程,而对于其他监控对象,仍 采用传统的监控方法,即当采集数据超过对应的阀值时就报警。
针对上述步骤,本发明还提供了一种数据库监控装置实施例。参照图2, 是所述脚本方式下的数据库监控装置实施例结构图,所述装置主要包括标志位
存储单元201、数据釆集与阅值判断单元202、消息发送单元203。
所述标志位存储单元201主要用于保存双校验监控数据标志位,以文件形 式保存,值为G或1, O表示采集数据未超过阀值,l表示超过。数据釆集与 阀值判断单元202对标志位存储单元201有更新权限,消息发送单元203对标 志位存储单元201有读取权限。
数据采集与阀值判断单元202首先运行一系列的Linux或Unix命令,并 把命令的输出结果作为采集数据保存到一些文件当中;然后把采集到的监控对 象的数值与对应的监控对象的阀值相比较,如果超过阀值,即通知消息发送单 元203进行处理。为了实现双校验,数据采集与阀值判断单元202还要完成一 个功能,就是记录双校验监控对象的标志位,但这个功能需要在调用消息发送 单元203处理完后再更新标志位存储单元201中的对应标志位。
数据采集与阀值判断单元202的具体执行流程参照图3所示,从流程图可 以看出,先调用发送消息单元203,然后再将标识比较结果的1标志位写入标 志位储存单元201中,这样消息发送单元203总能读取上一次的标志位信息。 并且,如果监控对象采集的数值不超过阀值,也要及时更新标志位存储单元 201中的对应标志位。
消息发送单元203主要用于根据数据采集与阀值判断单元202的调用情 况,通过邮件、手机短信等方式发出报警信息。消息发送单元203在处理双校 验监控对象的同时,还可以处理常规发送方式,即对进行一次比较超过阀值的 监控对象发出报警消息。消息发送单元203根据数据采集与阀值判断单元202
个参数,则进行常规发送;如果接收3个参数,则进行双校验发送。其中,第 一个参数$1的含义为发送的报警消息内容,第二个参数$2的含义为发送消息 的方式(邮件或短信等方式),第三个参数$3的含义为发送消息的具体类型
9(锁、阻塞或数据库负载)。具体的处理流程参照图4所示,如下
首先判断传入的参数个数,如果是2个,则以$2方式发送消息$1;如果 是3个,则根据参数$3判断具体的监控对象是锁、阻塞还是数据库负载,然 后从标志位存储单元201读取相应的标志,判断上一次标志位信息,如果是l 则以$2方式发送报警消息$1,如果是0则不发送报警消息。
优选的,由于在实际应用中,对很多对象的监控都需要用到发送消息的功 能,如果在每个监控脚本中都加入消息发送功能,将给程序的维护带来^l大的 困难。因此,为增强脚本的维护性,对所述消息发送单元进行了封装,用一个 独立的发送消息脚本来实现。
以上方法主要通过shell脚本来实现数据库监控数据的双校验,但还可以 通过数据库来实现。参照图5,是所述数据库方式下的数据库监控方法实施例 流程图,仍以双校验为例进行说明。
步骤501,周期性地采集监控对象数据,并保存到数据库;
步骤502,当每次数据采集完成后,对需要双校验的监控对象,查询数据 库获取监控对象的最新两条记录,并分别与相应的阀值进行比较;
步骤503,如果两条记录的数据都超过阀值,则发出报警消息。
由于校验次数与数据采集频率有关,所以如果采用三次或多次校验,只需 从数据库获取最新的三条或多条记录即可实现多次校验。
参照图6,是所述数据库方式下的数据库监控装置实施例结构图。所述装 置包括数据数据库601、数据采集单元602、阀值判断单元603、消息发送单 元604。所述数据库601中保存的是采集的监控对象数据。数据采集单元602 用于周期性地采集监控对象数据,并保存到数据库601中,当每次完成数据采 集后,通知阀值判断单元603。阀值判断单元603用于查询数据库601,为实 现双校验,只需查询监控对象的最新两条记录即可,如果两条记录都超过相应 阀值,就调用消息发送单元604。消息发送单元604用于发出报警消息。
由上可知,数据库方式与脚本方式的不同之处在于
第一,数据库方式下,需要把数据采集与阀值判断分开处理,即由单独的 模块实现;
第二, 二者的监控装置构成不同,数据库方式下不需要设置标志位存储单元,而通过数据库来保存采集的数据,阀值判断单元将会利用数据库SQL语句 来对监控数据是否超过阀值进行判断;
第三,数据库方式下,消息发送单元不用加入双校验的逻辑,而是由阀值 判断单元查询数据库并与阀值比较来得到是否发送报警消息的判断。
综上所述,使用数据库方式,可以查询到监控对象的历史数据信息,这是 采用shell脚本方式做不到的。但是,采用shell脚本方式来实现双校验,因 为在其体系结构中不需要部署数据库,所以显得特别的轻量型,布署部署容易,
成本较低,并已很好地满足了监控的需要。
以上对本发明所提供的一种数据库监控方法及装置,进行了详细介绍,本
明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般4支 术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处。 综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种数据库监控方法,其特征在于,包括对每个需要双校验的监控对象设置标志位,用于标识采集数据是否超过阀值;周期性地采集监控对象数据,并与相应的阀值进行比较;如果超过阀值,则当需要双校验时读取相应的标志位,根据该标志位判断上一次采集的数据是否也超过阀值,如果是,则发出报警消息;然后将当前的比较结果更新到该标志位。
2、 根据权利要求1所述的方法,其特征在于,还包括根据数据采集频 率设置校验次数。
3、 4艮据权利要求1所述的方法,其特征在于所述当前比较结果包括采 集数据超过阀值和不超过阀值两种结果。
4、 根据权利要求1所述的方法,其特征在于,还包括对不需要双校验 的监控对象,如果采集数据超过相应阀值,则直接发出报警消息。
5、 一种数据库监控装置,其特征在于,包括标志位存储单元,用于对每个需要双校验的监控对象设置标志位,用来标 识釆集数据是否超过阀值;数据采集与阀值判断单元,用于周期性地采集监控对象数据,并与相应的 阀值进行比较;如果超过阀值,则当需要双校验时调用消息发送单元进行双校 验,然后将当前的比较结果更新到标志位存储单元中对应的标志位;消息发送单元,用于从标志位存储单元读取相应的标志位,根据该标志位 判断上一次采集数据是否也超过阀值,如果是,则发出报警消息。
6、 根据权利要求5所述的装置,其特征在于所述数据釆集与阀值判断 单元对不需要双校验的监控对象,当采集数据超过相应阀值时,直接调用消息 发送单元发出报警消息。
7、 根据权利要求6所述的装置,其特征在于所述消息发送单元通过数
8、 一种数据库监控方法,其特征在于,包括 周期性地采集监控对象数据,并保存到数据库;对需要双校验的监控对象,查询数据库获取监控对象的最新两条记录,并分别与相应的阀值进行比较; . 如果两条记录的数据都超过阀值,则发出报警消息。
9、 根据权利要求8所述的方法,其特征在于,还包括根据数据采集频 率设置从数据库获取监控对象记录的数量。
10、 一种数据库监控装置,其特征在于,包括 数据采集单元,用于周期性地采集监控对象数据; 数据库,用于保存lt据釆集单元采集的监控对象数据; 阀值判断单元,用于对需要双校验的监控对象,查询数据库获取监控对象的最新两条记录,并分别与相应的阀值进行比较;如果两条记录的数据都超过 阀值,则调用消息发送单元;消息发送单元,用于发出报警消息。
11、 根据权利要求10所述的装置,其特征在于所述阀值判断单元根据 数据采集频率设置从数据库获取监控对象记录的数量。
全文摘要
本发明公开了一种数据库监控方法及装置,解决传统的数据库监控方法对于具有瞬间性的监控对象,存在误报较多、报警准确率较低的问题。所述方法包括对每个需要双校验的监控对象设置标志位,用于标识采集数据是否超过阀值;周期性地采集监控对象数据,并与相应的阀值进行比较;如果超过阀值,则当需要双校验时读取相应的标志位,根据该标志位判断上一次采集的数据是否也超过阀值,如果是,则发出报警消息;然后将当前的比较结果更新到该标志位。其中,所述校验次数是根据数据采集的频率而设定。本发明对监控对象连续多次超过相应阀值,才会发出报警消息,从而减少了误报的次数,提高了报警的准确度,为数据库的安全运行提供了有力的保障。
文档编号G06F11/30GK101446914SQ20071016737
公开日2009年6月3日 申请日期2007年11月26日 优先权日2007年11月26日
发明者林 赵 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1