数据库性能的无代理统一监控方法

文档序号:6573506阅读:318来源:国知局

专利名称::数据库性能的无代理统一监控方法
技术领域
:本发明涉及数据库
技术领域
,尤其涉及一种数据库性能的无代理统一监控方法。
背景技术
:随着计算机技术和通讯技术的不断发展,各大企业都加快了信息化建设的步伐,作为其中基础设施的信息网络平台建设也逐步完善。依托这个基础平台可以将合作伙伴、供应商、客户和员工有机地结合起来,为企业高层决策、部门信息交流、对外宣传等提供有效的途径。但随着应用需求的复杂性增加,网络规模的不断扩大,导致网络故障率提高、可管理性下降。加之病毒泛滥、网络攻击事件的日益增多、系统漏洞的不断出现,使得在传统的网络管理模式下,大量的日常网络故障需要人工定位、手动排除,不仅效率低下,同时对企业的整个生产经营活动也产生了巨大的影响,并且在一定程度上阻碍了企业信息化发展的步伐。因此,把企业信息网络平台的建设与管理提高到一个新的水平,在日常维护中实现网络故障的快速查找、快速定位、快速排除,摆脱“来电响应式”的被动网络管理方式,是推动企业信息化建设的关键。数据库性能的监控是企业网络管理的一项重要内容,实现数据库性能的集中化、智能化监控对于企业的正常运行、企业信息化的正常进行都具有重要意义。
发明内容本发明的目的是提供一种数据库性能的无代理统一监控方法。数据库性能的无代理统一监控方法使用配置文件描述各种需要监控的数据库,并使用统一的监控程序,根据配置文件描述的监控数据项,通过网络连接读取数据库性能数据;获取性能数据后,把它跟预先规定的阈值相比较,如果需要触发告警动作;同时把数据写入性能数据库中。所述的配置文件配置文件中包含了监控数据库对象数据项的各种信息,包括被监控数据库的信息、数据项的标识与分类、数据项的类型、数据项值的获取方法;数据项分为两类,分别为监控变量和平坦表;配置文件采用Windows操作系统常见的ini文件格式。监控程序监控程序读取配置文件后,对读取监控数据项的SQL语句进行优化,合并主体部分相同的语句,以减少对被监控数据库的影响;监控程序获得监控数据后,把数据与预先设定的阈值相比较,对超出阈值的数据项进行告警,并把所有数据项写入性能数据库。性能数据库性能数据库中的表分为两类,对于平坦表,有与之结构相同、但增加了时间和被监控数据库标识字段的数据表;对于监控变量,性能数据库中有三张表,分别描述变量的分类、变量的描述与阈值、变量的监控数据。本发明的优点是1)无需在被监控数据库端安装代理即可实现性能监控,部署成本低;2)使用同样的程序代码,只需编写不同配置文件即可实现对不同数据库的监控,使它具有良好的伸缩性和可扩展性;3)支持变量型和数据表型的性能监控,可支持常见的所有数据库类型。图1是数据库性能监控配置数据的处理流程;图2是本发明主要模块的结构图;图3是本发明中数据库性能监控的流程图;具体实施方式数据库性能的无代理统一监控方法的具体步骤如下1)把数据库的性能数据归结为监控变量和监控表。现有的数据库都无一例外地内建了对本身性能进行提取的支持,这也成为本发明使用统一的方法对数据库性能进行监控的基础。但是不同的数据库中性能数据的表示方法是不同的有的数据库把本身的性能数据库保存在系统表中,这些系统表可如同其他表一样进行操作(如Oracle和MicrosoftSQLServer);而另外一些数据库则把性能数据维护在本身的数据结构中,可通过执行命令进行提取,而且提取的数据看起来也像是从数据表中读出的一样(如MySQL和DB2),我们称这些表为“虚拟表”。不管是哪种情况,都可以通过TCP连接发送一定的命令或执行一定的SQL语句来提取性能数据。不管是实际数据表,还是“虚拟表”,根据其内容的组织方式,可以分为以下两种(1)表的内容为数据库某一特定方面的性能数据,表的每一列都具有事先定义的特定意义。(2)表的内容为一系列变量,而表中具有“变量名”或“变量编号”、“变量值”、“变量类型”等列。取出内容后,我们可以根据变量名或经变量编号查询获知变量所代表的意义。下面是监控表的例子(Oracle数据库)SQL>SELECTCREATED,LOG_MODEFROMV$DATABASE;CREATEDLOG_MODE---------------14-10月-06NOARCHIVELOGSQL>selectTABLESPACE_NAME,BLOCK_SIZE,STATUS,LOGGINGfromDBA_TABLESPACES;TABLESPACE_NAMEBLOCK_SIZESTATUSLOGGING--------------------------SYSTEM8192ONLINELOGGINGUNDOTBS18192ONLINELOGGINGTEMP8192ONLINENOLOGGINGCWMLITE8192ONLINELOGGINGDRSYS8192ONLINELOGGINGEXAMPLE8192ONLINELOGGINGINDX8192ONLINELOGGING上面的两次查询分别从两个系统表中获得了数据库和表空间的信息,从列的名字上我们也可以看出该列数据所代表的意义。表中的每一行数据代表一条有意义的记录,记录之间是并列的关系。下面是监控变量的例子(MySQL数据库和SQLServer数据库)showvariableslike“%size%”;select*frommaster.dbo.sysperfinfo;object_namecounter_nameinstance_namecntr_valuecntr_typeSQLServer:BufferManagerBuffercachehitratio1273537003008SQLServer:BufferManagerBuffercachehuitratiobase12961073939459SQLServer:BufferManagerPagelookups/sec7296272696320SQLServer:BufferManagerFreeliststalls/sec0272696320SQLServer:BufferManagerFreepages13365536在上面的例子中,同样用SQL语句或命令获得了多条数据,但是在查看具体的记录之前,我们不能获知记录所代表的意义。记录均为“变量名-变量值”型的数据,各条记录之间不存在关系。2)用配置文件来描述监控变量和监控表。把要监控的对象明确分为两类之后,可以用配置文件来描述这些监控对象,并用于监控程序对数据库进行监控。配置文件采用Windows平台的ini文件格式,即a.使用普通文本编码,可以使用任意文本编辑器进行查看、修改;b.配置文件由若干节(Section)构成,每个节分为节名和节体两部分,节名为中括号(“[”和“]”)围起来的字符串,如“[main]”。节体为若干个表示为等式的项目描述,等号左边为项目名,右边为项目值。如“VarNum=5”。c.以分号开始的行为注释行,在解析中会被忽略。要以ini文件格式对配置数据进行描述,配置文件中必须包含一个main节,以总体描述配置文件的内容。main节中有下列项目VariableNum——变量描述的个数。如果有5个变量,VariableNum=5,配置文件另有5个节分别描述5个变量,节名分别为Var1~Var5。TableNum——监控表格的个数。如果有3个监控表格,TableNum=3,配置文件另有3个节分别描述3个表,节名分别为Table1~Table3。DatabaseSig=本配置文件对应的数据库“指纹”(包括名称和版本,以产品名_版本号的形式编码),如果本配置文件支持多种数据库,或某个数据库的多个版本,则该项目列出所有该配置文件适用的产品“指纹”,中间以逗号分割。接下来是各个监控变量的描述和各个监控表的描述。每个监控变量的描述和每个监控表的描述各占一节。监控变量的节名为Var+数字编号,如“Var3”,节中包含如下项目VarID——保存数据时使用的ID,整型。VarName——变量名称,字符串。Type——变量类型,字段类型为字段在数据库声明的对应类型,比如INTEGER、CHAR(5)等。Class——变量归类,在作用上属于哪个分类。Description——变量作用描述SQL——要获得变量的值,应该使用什么SQL语句。Cond——SQL语句用来筛选本变量所使用的条件。obj_ect_value——指定从SQL语句所取出的哪个字段获取变量值。UpdateMethod——监控量的更新方式,可以是以下情况之一■0——RunOnce,只在启动时采集一次数据■1——RepUpdate,周期采样,只保留最后一次数据。■2——RepStore,周期采样,保留每次采样。Valid——该监控变量是否有效。对于监控表格而言,同样每个节包含一个监控表的描述,节名编码为“Table”+数字,如“Table3”。节中包含如下项目TableName——表格的名字UpdateMethod——更新方式,其作用同上。SQL——可选,如果有该项,则表的查询语句为该SQL语句,如果没有该项,则系统自动使用全部字段构造出查询语句。COLNUM——列的个数COL?——每列的描述,“?”为数字编号,从1开始。COL?的格式为Column_nameColumn_TypeColumn_Description其中Column_name为列名,Column_Type为列的数据类型,Column_Description为列描述。因为Column_name和Column_description中可以使用几乎任意字符,配置文件中为Column_name预留30字节的宽度,之后为Column_type,而Column_type为固定4字节宽度,之后为Column_description,直到行末尾。如果某个字段长度不足,则以空格填充空余部分。Valid——该监控表是否有效。使用上述的配置文件,就可以对所有数据库的监控内容进行描述,用于提取监控数据。3)监控信息数据库的数据组织。因为有两种类型的监控信息,监控信息数据库必须能够容纳每种类型。对于监控变量,可采用如下的数据表来描述a.性能数据表sysperfinfo,具有如下字段<tablesid="table2"num="002"><tablewidth="622">UpdateTIMETimpStamp型,记录数据收集时间DBID整型,数据库IDFEILDID整型,对应变量的IDVALUE字符串型,记录该变量的值</table></tables>b.性能数据描述表sysperfdes,具有如下字段说明阈值1和阈值2是两个浮点数,对于数值型的变量,规定了界限,如果高于或低于界限,则触发告警动作(告警动作有两种轻微和严重告警。如果过了第一个阈值但是未到第二个阈值,则触发轻微告警,否则触发严重告警。因为数值型变量有不同的增长方向,所以另设一方向变量,其方向由DIR确定)。DIR指明跟阈值的比较方法,如果DIR为1,则说明变量的值越小越好,当变量值<=阈值1时,不触发报警;当阈值1<变量值<=阈值2时,触发轻微告警;当变量值>阈值2时,触发严重告警。c.性能数据分类sysperfclass,具有如下字段对于监控表格,系统使用另外一种方式进行存储建立一个结构类似的表格,并增加数据库ID(DBID)字段和时间字段(UpdateTime),分别记录性能数据对应的数据库ID和数据的更新时间。下面是配置文件的一个例子[Main]VariableNum=3TableNum=2DatabaseSig=oracle_8[Var1]VarID=10001VarName=logonscumulativeType=0Class=7Description=logonscumulativeSQL=selectvaluefromv$sysstatwherename=′logonscumulative′object_value=valueUpdateMethod=2[Var2]VarID=10002VarName=logonscurrentType=0Class=7Description=logonscurrentSQL=selectvaluefromv$sysstatwherename=′logonscurrent′object_value=valueUpdateMethod=2[Var3]VarID=10003VarName=openedcursorscumulativeType=0Class=7Description=openedcursorscumulativeSQL=selectvaluefromv$sysstatwherename=′openedcursorscumulative′object_value=valueUpdateMethod=2[Table1]TableName=V$BUFFER_POOL_STATISTICSUpdateMethod=1COLNUM=19COL1=ID0BufferpoolIDnumberCOL2=NAME1BufferpoolnameCOL3=SET_MSIZE0BufferpoolmaximumsetsizeCOL4=CNUM_REPL0NumberofbuffersonreplacementlistCOL5=CNUM_WRITE0NumberofbuffersonwritelistCOL6=CNUM_SET0NumberofbuffersinsetCOL7=BUF_GOT0NumberofbuffersgottenbythesetCOL8=SUM_WRITE0NumberofbufferswrittenbythesetCOL9=SUM_SCAN0NumberofbuffersscannedinthesetCOL10=FREE_BUFFER_WAIT0FreebufferwaitstatisticCOL11=WRITE_COMPLETE_WAIT0WritecompletewaitstatisticCOL12=BUFFER_BUSY_WAIT0BufferbusywaitstatisticCOL13=FREE_BUFFER_INSPECTED0FreebufferinspectedstatisticCOL14=DIRTY_BUFFERS_SPECTED0DirtybuffersinspectedstatisticCOL15=DB_BLOCK_CHANGE0DatabaseblockschangedstatisticCOL16=DB_BLOCK_GETS0DatabaseblocksgottenstatisticCOL17=CONSISTENT_GETS0ConsistentgetsstatisticCOL18=PHYSICAL_READS0PhysicalreadsstatisticCOL19=PHYSICAL_WRITES0Physicalwritesstatistic[Table2]TableName=V$RSRC_CONSUMER_GROUPUpdateMethod=1COLNUM=9COL1=NAME1NameoftheconsumergroupCOL2=ACTIVE_SESSIONS0NumberofcurrentlyactivesessionsinthisgroupCOL3=EXECUTION_WAITERS0NumberofcurrentlywaitingsessionsCOL4=REQUESTS0CumulativenumberofrequestsCOL5=CPU_WAIT_TIME0CumulativeamountoftimethatsessionswaitedforCPUCOL6=CPU_WAITS0CumulativenumberoftimesallsessionswaitedforCPUCOL7=CONSUMED_CPU_TIME0CumulativeamountofCPUtimeconsumedbyallsessionsCOL8=YIELDS0CumulativenumberoftimessessionsyieldtheCPUCOL9=SESSIONS_QUEUED0Reservedforfutureuse3)配置文件的解析与优化配置文件解析模块从监控数据配置文件中读取数据库性能监控配置信息,经过规则优化模块的优化,产生监控变量集合和监控表集合。如图1所示,图中(1)监控数据配置文件,为描述被监控数据库性能数据的配置文件,配置文件可能有多个,每个文件对应一个或多个产品的一个或多个版本。(2)配置文件解析模块,对配置文件进行语法检查,并读取其中的监控变量和监控表的配置信息。(3)规则优化模块,对配置文件解析模块读取的配置信息进行优化,主要是对于具有仅条件部分不同的SQL语句的监控变量建立关联关系,以减少SQL语句的执行次数。(4)监控变量集合,记录了要监控的所有监控变量的信息(类型、获取方法等)。(5)监控表集合,记录了要监控的所有监控表的信息(有多少字段,字段类型分别是什么,如何获得数据等)。4)性能数据的读取与处理监控任务控制模块控制若干监控数据读取模块行为,数据读取模块根据监控变量集合和监控表集合从被监控数据库读取性能数据,写入监控信息数据库。如图2所示,图中(6)监控任务控制模块,为监控任务的总控模块,负责监控任务的创建和停止。对于每个要监控的数据库对象,它都创建一个任务,并传给任务监控对象的数据库产品“指纹”,用于获取监控数据。(7)监控数据读取模块,负责监控数据的读取。它由(6)监控任务控制模块创建后,从监控任务控制模块处获得要监控数据库对象的“指纹”,并依据指纹获得要监控数据库对象的监控变量集合和监控表集合,并据此进行性能监控。(8)被监控数据库,为要监控的数据库,可以为各种数据库类型。(9)监控信息数据库,用于记录对(8)被监控数据库监控数据,以备查阅,或及时对不正常状态进行告警。监控任务的执行流程如图3所示,主要步骤有(1)监控任务控制模块创建新的监控数据读取模块对被监控数据库进行监控。(2)监控数据读取模块从监控任务控制模块处获得要监控数据库对象的“指纹”,并依据指纹获得要监控数据库对象的监控变量集合和监控表集合,并据此进行性能监控。(3)如果所有监控变量均已处理,则转(9)(4)获取下一监控变量信息。(5)如果该监控变量的值在之前已经由同一SQL语句读取,则转(3)(6)按照监控变量中的SQL语句读取变量值,同时读取同一SQL语句能读取的其他变量值(即忽略SQL语句的条件部分所能读取的变量值)(7)对读取的数据进行处理(如写入监控信息数据库,告警等)(8)转(3)(9)如果所有监控表均已处理,转(14)(10)获取下一监控表信息(11)按表中指定SQL语句读取监控信息(12)对读取的数据进行处理(如写入监控信息数据库,告警等)(13)转(9)(14)如果收到停止命令,转(17)(15)休眠指定的时间间隔(采样间隔)(16)转(3)(17)停止。权利要求1.一种数据库性能的无代理统一监控方法,其特征在于使用配置文件描述各种需要监控的数据库,并使用统一的监控程序,根据配置文件描述的监控数据项,通过网络连接读取数据库性能数据;获取性能数据后,把它跟预先规定的阈值相比较,如果需要触发告警动作;同时把数据写入性能数据库中。2.根据权利要求1所述的一种数据库性能的无代理统一监控方法,其特征在于所述的配置文件配置文件中包含了监控数据库对象数据项的各种信息,包括被监控数据库的信息、数据项的标识与分类、数据项的类型、数据项值的获取方法;数据项分为两类,分别为监控变量和平坦表;配置文件采用Windows操作系统常见的ini文件格式。3.根据权利要求1所述的一种数据库性能的无代理统一监控方法,其特征在于所述的监控程序监控程序读取配置文件后,对读取监控数据项的SQL语句进行优化,合并主体部分相同的语句,以减少对被监控数据库的影响;监控程序获得监控数据后,把数据与预先设定的阈值相比较,对超出阈值的数据项进行告警,并把所有数据项写入性能数据库。4.根据权利要求1所述的一种数据库性能的无代理统一监控方法,其特征在于所述的性能数据库性能数据库中的表分为两类,对于平坦表,有与之结构相同、但增加了时间和被监控数据库标识字段的数据表;对于监控变量,性能数据库中有三张表,分别描述变量的分类、变量的描述与阈值、变量的监控数据。全文摘要本发明公开了一种数据库性能的无代理统一监控方法。使用配置文件描述各种数据库的需要监控的内容,包括需要监控的数据项的信息、获取数据的方法等。监控程序读取配置文件后对监控规则进行优化,使需要执行的查询语句最少,并作为监控数据读取模块从数据库提取性能数据的依据。接下来监控程序根据配置周期性地从被监控数据库中提取性能数据,写入性能数据库中。本发明无需在被监控端安装代理即可实现对数据库的监控,减小了对数据库监控的安装需求,令部署更加容易,同时只需提供不同的配置文件即可实现对各种数据库的监控,具有良好的伸缩性和可扩展性。文档编号G06F17/30GK101013442SQ200710067200公开日2007年8月8日申请日期2007年2月7日优先权日2007年2月7日发明者王继民,平玲娣,潘雪增,陈小平,陈健,赵英虎申请人:浙江大学,黄裕钦
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1