用于信息系统监控的通用监控模型技术的制作方法

文档序号:7892145阅读:221来源:国知局

专利名称::用于信息系统监控的通用监控模型技术的制作方法
技术领域
:本发明涉及计算机技术,尤其是涉及利用通用监控模型,对IT信息系统设备进行监控,保障系统稳定运行的通用监控模型技术。賴駄随着计算机信息系统的广泛使用,保障系统稳定运行的IT系统监控显得尤为重要。从IT信息系统的典型组成看,可以划分为基础设施类软硬件设备和针对具体需求定制开发的应用软件。其中,基础设施类软硬件设备包括了网络设备、主机等硬件设备(含各种e化设备)、操作系统软件、数据库软件、应用服务器软件等。从系统故障概率看,基础设施类的软硬件设备多出于大型供应商,其市场覆盖大、产品成熟度高,故障概率较低,监控需求较为固定;而定制开发的应用软件往往是主要的故障源,各个应用软件采用的技术千差万别,故障点、故障现象亦千差万别,因此,相应的监控需求呈现出日益个性化的特点。由于各种计算机信息系统(特别是定制开发的应用软件),所采用的技术千差万别,导致当前各个监控软件供应商基本只能提供针对由各大厂商研制的商品化软硬件设备的监控,如网络设备监控、数据库监控、操作系统监控、应用服务器监控、某些大型商品化应用软件(如SAP软件)等。针对各种定制化应用软件的监控则几乎为空白。从而严重制约了IT系统监控软件的有效性和实用性。因此,迫切需要一种成熟的监控技术,能够有效满足各种个性化监控需求。在信息系统监控中,通过监控软件对监控对象进行监控时,一般均包括三个动作连接监控对象、获取监控指标报文、报文解析。其中■连接监控对象是指监控软件通过一定的传输通信协议与监控对象连接,此时,传输通信协议的任务包括连接监控对象、断开监控对象、连接状态判断、传输监控指标报文、传输过程中的通信校验与纠错等。■获取监控指标报文是指通过一定的动作获取包含监控指标值的报文的行为。■报文解析是指通过一定的运算处理,获取报文中包含监控指标值的行为。针对上述过程,常规监控软件在具体代码实现时,将上述三部分作为整体写入程序中,经过编译后,以二进制代码运行。这种技术必然存在扩展性差的缺陷,主要表现在以下几方面1.监控指标的种类固定。针对每种监控对象,均采用这种固定程序编写方式,监控指标的个数和种类都固化在程序中,因此,监控指标的种类固定、个数固定,监控指标扩展性差。2.通信协议与监控指标的组合固定。由于监控中每个监控指标的获得都是在建立通信的基础上进行的,采用上述技术时,对不同的通信协议,都要通过编程方式实现在该协议下所采集的全部监控指标。厂家能够提供哪些协议支持,就仅能使用这些协议,监控的适应性差。
发明内容针对上述现状,本发明的目的在于提出了一种通用监控模型技术,采用具有良好扩展性的开放模型描述现实中的各类监控对象,并通过本发明提供的技术实现,可以很方便地实现对各类新监控对象的扩展,很好满足监控需求的变化。本发明的目的通过下述方法实现,本发明的一种利用通用监控模型对信息系统监控的方法,包括步骤(1)将信息系统中的各种监控对象统一设定为通用管理对象进行描述,每个管理对象包括能够监控到的属性、获取属性的方法;(2)使用通用访问协议实现获取属性的方法,其中连接管理对象是通过使用通信协议方式进行的;获取属性则通过设定的动作完成;结果解析包括字符串解析、拼装或对数值结果的运算;(3)通过配置方式定义管理对象及其访问,按照一定的语法要求,通过编写配置文件的方式对管理对象进行描述,完成配置文件编写后,通过程序生成与该类设备对应的java程序;该java程序每创建一个实例对象,即与现实中该类设备的一个具体实例设备相对应,通过对该java对象的控制,可实现对实际设备的监控。步骤3所述的配置文件采用XML文件,XML文件的总体结构如下〈ModelMBeanWrapper〉〈ModelMBeanDescriptor>该类监控对象总体描述,名称、描述信息;</ModelMBeanDescriptor><constructor>该类监控对象的java类的初始化参数,包括可能会使用到的通信协议所对应的java类有哪些,监控结果解析规则所对应的java类的声明;</constructor><attributeDeseriptors>该类监控对象的各种属性定义,包括属性名称、属性种类配置属性/状态属性/性能属性,数据类型、属性的显示名称、属性的获取方法名称、其它辅助信息;</attributeDescriptors〉<operationDescriptors>由若干Operation组成,每个Operation定义了针对实际监控对象进行监控时的相关动作,包括与设备的连接动作、断开动作、每个属性的获取方法;在每个Operation内部,由若干WrapperMethod组成,每个WrapperMethod是该通用监控对象java类初始化时所声明的java类所提供的方法,包括通信协议Java类所提供的方法或结果解析Java类所提供的方法;通过各个WrapperMethod的顺序执行,可实现该Operation所需执行的动作。</operationDescriptors></ModelMBeanWrapper>在所述XML文件中,可根据实际需要对采用何种通信协议连接管理对象、对象的属性有哪些、每个属性的获取方法是什么等,根据实际需要进行增加、删除、修改,保证了监控模型具有可扩展性。在步骤1中所述的属性包括配置属性表明管理对象的配置信息;状态属性表明监控对象的当前状态;性能属性展现管理对象性能随时间连续变化的参数。在步骤2中,所述的连接管理对象、获取属性和结果解析等动作都用对应的java对象实现,通过对象的组合使用,实现对管理对象属型的访问获取。在步骤2中,所使用的通信协议是ssh、telnet、JDBC、JMX、SNMP、TuxedoATMI、SQL*Net或特定的私有通信协议。在步骤2中,获取属性设定的动作可以是执行某个操作系统命令行、访问mib库、执行某个SQL语句、执行某个方法调用等,具体动作可结合实际的监控设备具体决定。具体实施例方式本发明提出的通用监控模型引入以下的概念1.通用监控对象首先,从概念上,引入通用监控对象的概念,用以将现实世界中的各种监控对象统一抽象为通用监控对象(Mbean,也称管理对象)进行描述。每个管理对象包括能够监控到的属性(即监控指标)、获取属性的方法(即获取监控指标值的方法)。*属性每个管理对象都有若干属性,即各种监控指标。在本模型中,将属性延伸细分为■配置属性管理对象的配置信息,一般变化较少,只有当系统配置发生变化时,配置属性发生变化(如表空间的大小)。针对这类属性的值,一般是因需采集。■状态属性管理对象的一组离散的状态值,表明监控对象的当前状态(如表空间的离线状态、在线状态等)。一般也是因需采集。■性能属性展现管理对象性能变化的参数,是随时间连续变化的属性(如CPU利用率,随时间变化而变化)。一般需要持续采集*获取属性的方法是指如何连接到管理对象上(通过某种通信协议),如何获取监控指标,如何解析监控指标的值等。(参见通用协议访问)2.通用访问协议通用协议访问实现了获取属性的方法。任何一个管理对象属性的获得包括三个步骤连接管理对象、获取属性、结果解析。其中*连接管理对象都是通过一定的通信方式进行的,如ssh、tdnet、JDBC、JMX、SNMP、TuxedoATMI、SQI^Net等,也可以是特定的私有通信协议;*获取属性则通过一定的动作完成,如执行某个命令行、访问mib库、执行某个SQL语句、执行某个方法调用等;*结果解析则可以包括诸如字符串解析、拼装;数值结果的各种运算等。參在通用协议访问模型中,上述三部分都有对应的对象实现,通过各种对象的组合使用,实现对管理对象属型的访问获取。3.通过配置方式定义管理对象及其访问当对现实中的某类监控对象进行监控时,按照通用监控模型,可采用通用监控对象描述该类设备。描述时,可按照一定的语法要求,通过编写配置文件的方式进行。完成配置文件编写后,可通过程序生成与该类设备对应的java程序类。该java程序类每创建一个实例对象,即与现实中该类设备的一个实例设备对应,通过对该Java对象的控制,可实现对实际设备的监控。4.配置文件说明如上所述,针对某类监控对象进行监控时,采用XML文件方式进行监控对象的定义。在XML文件中,定义了对某类监控对象进行访问时的协议是什么,该类监控对象具有哪些监控属性,每个属性的获取方式是什么等。XML文件的总体结构说明如下<ModelMBeanWrapper><ModelMBeanDescriptor>该类监控对象总体描述,名称、描述信息;</ModelMBeanDescriptor><constructor>该类监控对象的java类的初始化参数,包括可能会使用到的通信协议所对应的Java类有哪些,监控结果解析规则的Java类的声明;</constructor><attributeDescriptors>该类监控对象的各种属性定义,包括属性名称、属性种类配置属性/状态属性/性能属性,数据类型、属性的显示名称、属性的获取方法名称、其它辅助信息;</attributeDescriptors><operationDescriptors>由若干Operation组成,每个Operation定义了针对实际监控对象进行监控时的相关动作,包括与设备的连接动作、断开动作、每个属性的获取方法;在每个Operation内部,由若干WrapperMethod组成,每个WrapperMethod是该通用监控对象Java类初始化时所声明的Java类所提供的方法,包括通信协议Java类所提供的方法或结果解析Java类所提供的方法;</operationDescriptors></ModelMBeanWrapper>在上述文件中,由于釆用什么协议、具有哪些属性、每个属性的获取方法等,均可根据实际需要进行增加、删除、修改,因此,保证了监控模型具有很好的可扩展性。实施例l当使用上述模型进行Lirrnx系统监控时,需要确定Linux属性有哪些、通过什么协议连接Linux系统,如何获取属性等问题。以下举例作详细说明。1.Linux系统的属性举例Linux系统的监控指标可划分为配置属性、状态属性、性能属性。按照上述关于配置属性、状态属性和性能属性的划分原则,各属性举例如下*配置属性用于描述Linux系统的配置信息,一般不随时间而变化的信息,例如操作系统版本、CPU类型等信息。*状态属性指反应系统的状态的指标,具有离散值的特征。如某进程的数目,为i或o,分别标明该进程存在或不存在。*性能属性反应系统性能变化的指标,随时间连续变化的参数指标。如CPU总使用率等。2.访问协议针对Linux的监控,可通过Telnet协议或Ssh协议进行访问,需在Unix系统中建立一个系统用户,该用户能够执行相关操作系统命令获取监控指标。3.属性获取方法针对每个属性,通过执行相关的操作系统命令,即可获得各个监控指标。例如*配置属性■操作系统版本通过执行"uname-o-r"Linux系统命令,取返回结果的第一行第一列即可得到操作系统版本信息。■CPU类型通过执行"uname-p"Unix系统命令,通过Linux的awk命令取返回结果中包含cputype信息的一行,即可获得CPU类型信息。*状态属性■进程状态通过执行"ps-ef|grep$l|wc-l"Linux系统命令,获取所关心进程的当前数目。*性能属性■CPU总使用率通过执行"sar-u12|grepAverage"Linux系统命令,通过获取返回结果第一行第3列获得CPU总使用率信息。4.配置文件举例配置文件内容如下<ModelMBeanWrapper>〃"7"薪分尉该遞微舰表舰沐薪述<ModelMBeanDescriptorname="LinuxOsManagement"displayName="LinuxOSManBySSH"visibility:""persistPolicy="Never"persistPeriod="0"description="managementforLinuxOSbySSHprotocol"presentationString="notValid"/>〃"7^f潘述该遞^^e^表庚对应游^va类效糸众屏憲要游/E息,包添该逮屑对家巡挖好伊屑游if/r幼议、"J^"资中^^f攻^"荣/^i^^r法。<constructor>〃據众参教〈params〉<paramname="CommandConfig"value="ShellCommandsForLinux—2.6_.xmr'type="java.lang.String"/>〃炎疗,/薪""ja获攻吝个参教好说^f游紫^"系统洽^在遂jT/^^定义</params>〃定X^伊屑游豫定义类,包翁^^屑5s;/銷^X^:^^"^^^表,获攻錄荣后游吝摔,叛方兹。<objeetReferences>〃鄉W銷雌微舰表<objectRefclassname="cn.com.dhit.management.mbean.ssh.SshMan"name="handle"type="object"><paramname-"CommandConfig"type="java.lang.String'V></objectRef>//淑鄉7bo腿包柳舒磁微綠荣膨。<objectRefclassname="cn.com.dhit.management.mbean.mise.ToolUtirname="util"type-"object"/></obJ6ctRsferencss></constructor>〃"7"定J縱舰表颜有游舒虜丝<attributeDescriptors>〃凝伊系统嚴本虜丝游定J,包适名称'教游类剪、潘迷爭,遂虜丝逮过^W游gWOS/"/o/"腳fto"方兹获淳,F/ag=0表剪该虜丝;f紀f虜丝。<attributename="OSVersion"type="java.lang.String"descriptio『"操作系统版本"isMain="true"isReadable="true"isWritable="false"isls-"false"displayName^'操作系统版本"getMethod-"getOSInformation"Flag="0"〃CP(/类婆游紀f虜丝定j6包翁名蕭'教薪类產、潘述爭,该虜丝遞过f面游gWQ7"2)pe方兹获淳,Ftog=0表^该虜丝違紀置虜丝。-attributename="CPUType"type="java.lang.String"description="CPU类型"isMain="true"isReadable="true"is\Vritable="false"isls="false"displayName="CPU类型"getMethod="getCpuType"Flag="0"〃C尸〃,总伊屑率性虔虜ff定义。包舒名旅,教薪类婆,潘述争,该虜ff遝过后浙游gert:戸7bto/方法获淳,尸/明=2表欲该虜fef紀f虜丝。<attributename="CpuTotal"type="java.lang.Float"description="CPU总使用率"unit="%"isReadable="true"isWritable="false"isls-"false"displayName="Cpu总使用率"getMethod="getCpuTotal"Flag="2"</attributeDescriptors>〃"7"定乂7该遞屑虚斧对家麻箱併效吝摔方法,包存遂接实新巡挖对表游方法,J:述吝个虜丝游获攻方兹寧。泫每个方法尿錄议夷麻箱併游莸攻监控指标澄游方法,莸攻指标葸后游迸一步,析必理,淑娜""7包箱鄉減遂疗。<operationDescriptors>〃与微皮吝遂麥参#體,鄉鹏鈔议类簽併^"/>。聰方法<operationname="setParams"operResponseType="void"><signatures>〃>^乂传乂##<signaturename="NM_IP"displayName^'设备地址"type="java.lang.String"/>-signaturename="username"displayName-"访问帐号"type-"java.l加g.String"/>(signaturename="passwd"displayName^'访问口令"type="java.lang.String"defaultValue="public"/>々signatures><WrapperMethods>〃顺序源厉勿7^吝个方法,每个方法屋"/i錄议裙炎凝併游方法<wrapperMethodobjectRef="handle"method-"setParams"returnType="void"><params><paramname="hostaddress"type="java.lang.String"valueRef="reference"value-"NMIP7><paramname-"usem咖e"type^"javaJang.String',valueRef="reference"value="usernanie"/><paramname="passwd"type="java.lang,String"valueRef="reference"value="passwd"/></params></wrapperMethod></wrapperMethods></opcr8tion>〃与做膽遵鄉旅,源原鹏膝类凝併游c匿"旅<operationname="Connect"operResponseType="void"><signaturesx/signatures><wrapperMethods><wrapperMethodobjectRef="handle"method="Connect"returnType="void"><paramsx/params></wrapperMethod><AvrapperMethods><^operation>〃与巡柳贿万财法,娜鹏淑类連併腐<證"方法<operationname="disConnect"operResponseType="void"><signatures></signatures><wrapperMethods><wrapperMethodobjectRef="handle"method="disConnect"returnType="void"><params></params><AvrapperMethod></wrapperMethods></operation>//滞与做对系;f絲麥,源靡7/城微遂併条C"方法<operationname="isConnected"operResponseType^'javaJang.Book加"〉<signatures></signatures>15<wrapperMethods><wrapperMethodobjeetRef="handle"method="isConnectreturnType="java.lang.Boolean"><params></params><AvrapperMethod></wrapperMethods></operation>〃莸攻凍争f统虜ff底唐,錄滞7^5//鈔议类厥簽併游织改"^^/"6方您,该方法说疗7在5/^/Co/nw朋&fV""za—2.6_.jc/w/义斧0定1游与训"/0務i^^^净疗,莸攻凝/^^^信唐<operationname="getOSInformation"operResponseType="java.lang.String"><signaturesx/signatures><wrapperMethods><wrapperMethodobjectRef-"handle"method-"getSingleValue"returnType="java.lang.Object"><params><paramname-"ItemName"type-"java.l加g.String"valueRef="constant"value="osinfo"/></params><AvrapperMethod></wrapperMethods><7opcr3don>〃,攻c尸"类婆^wm唐,源^/^//鈔议^^錄併效^/^^^^方您,该方法教^7在^e〃Oww附"m^尸or"m^—26—.jc附/jt斧0定J^^与c;w0^裙关游命净^f'资欲C尸〃^^虚乂#:唐<operationname="getCpuType"operResponseType="java.lang.String"><signatures><signatures><wrapperMethods>〈wrapperMethodobjectRef="handle"method-"getSingleValue"returnType="java.lang.Object"〉<params>〈pararnname="ItemName"type^"java,l加g.String"vaiueRef^"constant"value="cputype"/></params></wrapperMettiod></wrapperMethods></operation>〃莸攻C尸^总浙^率信唐,源厉7SOT纫议类^F箱併游伊M/w/恥/固方兹'该方兹教疗7^幼e〃Co加附"/wfeFor"/mx—26—.jtm/jf斧0定l游与c/w」oto/裙关游^净疗,莸攻C尸t/^/厉率^:唐。/^t:唐为分项c尸"荐滞皋#石激羞麥#^总^/席举,尿必,还霱源^^//鈔议类麻箱併游幼/^面诚'辟吝个微微微厗禱湖雌微凝舰c"/尸e一膽,將W肌<operationname="getCpuTotaroperResponseType="java.lang.Float"><signatures>々sgnatures><wrapperMethods>〃攻冊分柳郝虔<wrapperMethodobjectRef="handle"method="getMutiValues"returnType="[Ljava.lang.Object;"paramName="tempValues"><params><paramname="ItemName"type="java,lang.String"valueRef="constant"value="cpu_totar'/></params></wrapperMethod>〃分观颠<wrapperMethodobjectRef="han<Ue"method="sumValues"returnType="java.lang.Object"paramName="tempSumValue"><params><paramname="array"type-"[Ljava.lang.Object;"valueRef="reference"value="tempValues"/><paramname="sequence"lype="java.lang.Integer"valueRef="constant"value="07><paramname="retType"type="java.lang.String"valueRef="constant"value="java.lang,Float"/></params></wrapperMethod><wrapperMethodobjectRef="utirmethod="calPercent"returnType="java.lang.Object"><params><paramname="srcNumber"type="java.lang.Number"valueRef="reference"value="tempSumValue7><paramname="rettype"type="java.lang.String"valueRef="constant"value="java.lang.Float'V><paramname="dicision"type="java.lang.Integer"valueRef="constant"value="1007></params><AvrapperMethod></wrapperMethods></operarion></operationDescriptors></ModelMBeanWrapper>实施例2当使用通用监控模型进行Oracle系统监控时,需要确定属性有哪些、通过什么协议连接,如何获取属性等问题。以下举例作详细说明。1.Oracle系统的属性举例Oracle系统的监控指标可划分为配置属性、状态属性、性能属性。按照配置属性、状态属性和性能属性的划分原则,各属性举例如下-*配置属性用于描述Oracle系统的配置信息,一般不随时间而变化的信息,例如数据库名称、数据库版本等信息。17状态属性指反应系统的状态的指标,具有离散值的特征。如实例状态、表空间属性等。*性能属性反应系统性能变化的指标,随时间连续变化的参数指标。如内存排序比、硬分析百分比、库缓存命中率等。2.访问协议针对0ralce的监控,可通过JDBC协议进行访问,需在Oracle数据库中建立一个具有系统只读权限的DBA用户,该用户能够执行相关SQL命令获取监控指标。3.属性获取方法针对每个属性,通过执行相关的SQL命令,即可获得各个监控指丰示。例如*配置属性■数据库名称通过执行"selectnamefromv$database"SQL命令,取返回结果即可得到数据库名称信息。■数据库版本通过执行"selectbannerfromv$version"SQL系统命令,取返回结果即可得到数据库版本信息。*状态属性■实例状态通过执行"selectstatusfromv$instance"SQL系统命令,获取数据库实例的当前状态。■表空间属性通过执行"selecttablespace_name,max—extents,statusfromdba一tablespaces"SQL系统命令,获取表空间的属性,包括表空间名、扩展段、表空间当前状态等。*性能属性■内存排序比通过执行"selectmem.value/(mem.value+dk.value)*100fromv$sysstatmem,v$sysstatdkwheremem.namelike'sorts(memory)'anddk.namelike'sorts(disk)'"SQL系统命令,获取结果。■库缓存命中率通过执行"selectG_ph.value/(db.value+con.value》*100fromv$sysstatph,v$sysstatdb,v$sysstatconwhereph.namelike'physicalreads'anddb.namelike'dbblockgets'andcon.namelike'consistentgets'"SQL系统命令,获取结果。4.配置文件举例<ModelMBeanWrapper>〃":r教分舒鄉微舰她总沐薪述<ModelMBeanDescriptorname="Oracle—8—9—10"displayName-"OracleDeviceManagement"visibility-"1"persistPolicy="Never"persistPeriod="0"description="managementfortheGeneralOracle8,9,10gdevice"presentationString="notValid"/>〃"7^f翁遂该遞屑藍资岸表屏对应^/flVfl类教始"^W要游^息,包存该遞厉对表箭茇好梦屑游遞,坊议'"j^^资伊^^r^T^"荣/^^^;T法。<constructor><paninis><paramname-"drivemame"value="oracle.jdbc.driver.OracleDriver"type="java.iang,String"/></params><objcctRcferenccs><objectRefclassname-"com.wisentsoft.m加agement.commons.jdbc.JdbcV2Support"name-"oracle"type="object"><paramname="drivername"type="java.lang.String"/></objectRef><objectRefclassname-"cn.com.dhit.management,event.Usteiier.SNMPEvemListener"name="snmpTrapLis"type="object"/></objectReferences></constructor>〃"T^遂微綠颜絲吝f微<aftributeDescriptors><attributename="DbName"type="java.lang.String"description-"数据库名称"isReadable="true"isWritable="faise"isls="false"displayName-"数据库名称"getMethod-"getDbName"Flag="0"isMain="true"/>attributename="DbVersion"type="java.lang.String"description-"数据库版本"isReadable-"true"isWritable="false"isls="false"displayName^,数据库版本"getMethod-"getDbVersion"Flag="0"isMain="true"><attributename="InstanceStatus"type="java.lang.String"description-"实伊J状态"isReadable="true"isWritable-"false"isls-"false"dispiayName^'实例状态"getMethod="getInstanceStatus"Flag="1"><attributename="TablespaceAttr"type="javax.management.openmbean.TabularData"displayName-"表空间的各项属性"description-"表空间的各项属性"isReadable="true"isWritable="false"isls-"false"g改Method-"getTablespaceA加"getterKeys-"fetchTablespaceAttr"Flag="0"/><columnAttributename="tablespace__name"type="java.lang.String"displayName^'表空间名称"Flag="0"isKey="true"isReadable="true"isWritable="false"isIs="false"/><columnAftributename="max_extents"type-"java,lang丄ong"displayName^'最大扩展数"Flag="0"isKey="false"getMethod="fetchTBmax_extents"isReadable="true"isWritable="false"isls="false"unit^'个'V〉<columnAttributename="stauis"type="java.lang.String"displayName^'状态"Fiag="l"isKey-"false"getMethod-"fetchTBstatus"isReadable="true"isWritable="false"isIs="false"/></attribute><attributename="LibraryCacheHh"type="java.lang.Float"description-"库缓存命中率"isReadable="true"isWritable="false"isls=',false"displayN細e-"库缓存命中率"getMethod="getLibraiyCacheHit"Flag="2"unit="%"/><attributename="SortMemoryRatio"type="java.lang,Float"description-"内存排序比"isReadable="true"isWritable="false"isls="false"displayName="内存排序比"getMethod-"getSortMemoryRatio"Flag="2"unit="%"A></attributeDescriptors><operationDescriptors>〃与微没吝遂麥参微f,柳湖纫议微娜犯/ZWw膽<operationname="setParams"operResponseType="void"><signatures>-signaturename="NM_IP"displayName^"设备地址"type-"java,lang.String"/><signaturename="sid"dispiayName="OracleSID"type="java.lang.String"/>-signaturename="port"displayName-"月艮务端口号"type="java.lang.String"defaultValue="1521"/><signaturename="user"displayName="DBA帐号名称"type="java.lang.String7>(signaturen細e-"Passwd"displayName="DBA帐号口令"type-"javaJang.String"〉</signatures><wrapperMethods><wrapperMethodobjectRef="oracle"method-"replaceFirst"returnType="java.lang.String"paramName="jdbcUrlO"><params><paramname="template"type-"java.lang.String"valueRef="constant"value="jdbc:oracle:thin:@::"/><paramname="hostac!dress"type=="java.lang.0bject"vaIueRef="reference"value="NM-IP'V></params></wrapperMethod><wrapperMethodobjectRef="oracle"method="replaceFirst"returnType-"java.iang.String"paramName="jdbcUrl1"><params><paramname="template"type="java.lang.String"valueRef="reference"value="jdbcUrlO'V><paramname="dbport"type="java.lang.Object"valueRe,"reference"value="port"/><AvrapperMethod><wrapperMethodobjectRef="oracle"method-"replaceFirst"returnType="java.lang.String"paramName="jdbcUrl2"><params><paramname="template"type="java.lang.String"valueRef="reference"alue="jdbcUrir/><paramname="dbsid"type="java.lang.Object"valueRe,"reference"value="sid"/></params>々wrapperMethod><wrapperMethodobjectRe,"oracle"method-"setParams"returaType="void"><params><paramnamc="jdbcurrtype="java.iang.String"valueRef="reference"value="jdbcUrl27><paramname="user"type="javaJang.String"valueRef="reference"value="user"/><paramname="Passwd"type-"java.l加g.String"vaJueRef="reference"value="Passwd'V></params>21<formula>formulaseeoriginaldocumentpage22</formula><signaturesx/signatures><wrapperMethods><wrapperMethodobjectRef="oracle"method="disConnect"returnType="void"><params></params><AvrapperMethod><wrapperMethodobjectRef="snmpTrapLis"method="disConnect"retumType="void"><params></params></wrapperMethod></wrapperMethods></operation>〃蕭与巡柳表違體麥,鄉咖鈔议微凝娜"c画"減<operationname="isConnected"operResponseType="java.lang.Boolean"><signaturesx/signatures><wmpperMethods><wrapperMethodobjectRef="oracle"method="isConnected"returnType="java.lang.Boolean"><params></params></wrapperMethod></wrapperMethods></operation>〃微微棘#<operationname="getDbName"operResponseType="java.lang.String"><signaturesx/signatures><wrapperMethods><wrapperMethodobjectRef="oracle"method-"getSingleValue"returnType="java,lang.Object"><params><paramname="sqrtype="java,lang.String"valueRef="constant"value="selectnamefromv$database"/>〈paramname-"retType"type-"javaJang.String"valueRef="constant"value="java.lang.String7></params><AvrapperMethod><AvrapperMethods></operation>〃微微,鮮<operationname="getDbVersion"operResponseType="java.lafig.String"><signaturesx/signatures><wrapperMethods><wrapperMethodobjectRef="oracle"method="getSingleValue"returnType-"java.lang.Object"><params><paramname="sqr'type="java.lang.String"vahieRef^"constant"value="selectbannerfromv$version"/>23〈par咖name="retType"type="java.lang.String"valueRef="constant"value="java.lang.String"/i></params>々wrapperMethod></vvrapperMethods></operation>〃微微棘纖吝<operationname="getInstanceStatus"operResponseType="java.lang.String"><signaturesx/signatures><wrapperMethods><wrapperMethodobjectRef="oracle"method-"getSingleValue"returnType="java,lang.Object"><params><paramname="sqrtype="java.lang.String"valueRef="constant"value="selectstatusfromv$instance"/><paramname="retType"type="java.lang.String"valueRef="constant"value="java,lang.String'V></params></wrapperMethod><AvrapperMethods></operation>〃微教厨緒微<operationname="getTablespaceAttr"perResponseType="javax.management.openmbean.TabularData"><signatures/><wrapperMethods><wmpperMethodobjeetRef="oracle"method="getTabularData"returnType="javax.management.openmbean.TabularData"><params><paramname="sql"type="java.lang.String"valueRef="constant"value="selecttablespace—name,max一extents,statusfromdba一tablespaces"/><paramname="TablespaceAttr"type="javax,managementopenmbean.TabularType"valueRef="attributeObj"value="TabularType"/></params><AvrapperMethod></wrapperMethods>〃微/^存银靴<operationname-"getSortMemoryRatio"operResponseType="java.lang.Float"><signatures></signatures><wrapperMethods>〈wrapperMethodobjectRef="orade"method="getSingleValue"returnType-"java.lang.Object"〉<params><paramname="sqrtype="java.lang.String"valueRef="constant"value-"selectmem.value/(niem.value+dk,value)*100fromv$sysstatmem,v$sysstatdkwheremem.namelike'sorts(memory)'anddk.n咖elike'sorts(disk)m/><paramname="retType"type-"java,lang.String"valueRef="constant"value^'java^ang.FloaD</params></wrapperMethod><AvrapperMethods></operation>〃微凝絲辩<operationname="getLibraryCacheHit"operResponseType="java.lang.Float"><signatureS></signatureS>'<wrapperMethods>〈wrapperMethodobjectRef="orade"method="getSingleValue"returnType="java.lang.Object"><params><paramname^"sql"type^"java.iang.String"valueRef="constant"value="select(sum(pins)-sum(reloads))/sum(pins)*100fromv$Hbrarycache"/><paramname="retType"type="java.lang.String"valueRef="constant"value="java.lang.Float"/></params></wrapperMethod></wrapperMethods></operation></operationDescriptors></ModelMBean\Vrapper>。权利要求1、一种利用通用监控模型对信息系统监控的方法,其特征在于包括步骤(1)将信息系统中的各种监控对象统一设定为通用管理对象进行描述,每个管理对象包括能够监控到的属性、获取属性的方法;(2)使用通用访问协议实现获取属性的方法,其中连接管理对象是通过使用通信协议方式进行的;获取属性则通过设定的动作完成;结果解析包括字符串解析、拼装或对数值结果的运算;(3)通过配置方式定义管理对象及其访问,按照一定的语法要求,通过编写配置文件的方式对管理对象进行描述,完成配置文件编写后,通过程序生成与该类设备对应的java程序;该java程序每创建一个实例对象,即与现实中该类设备的一个实例设备对应,通过对该java对象的控制,可实现对实际设备的监控。2、根据权利要求1所述的信息系统监控的方法,其特征在于,步骤3所述的配置文件采用XML文件。3、根据权利要求2所述的信息系统监控的方法,其特征在于,所述XML文件的总体结构如下<ModelMBeanWrapper><ModelMBeanDescriptor>该类监控对象总体描述,名称、描述信息;</ModelMBeanDescriptor><constructor>该类监控对象的java类的初始化参数,包括可能会使用到的通信协议所对应的Java类有哪些,监控结果解析规则的Java类的声明;</constructor><attributeDescriptors>该类监控对象的各种属性定义,包括属性名称、属性种类配置属性/状态属性/性能属性,数据类型、属性的显示名称、属性的获取方法名称、其它辅助信息;</attributeDescriptors><operationDescriptors>由若干Operation组成,每个Operation定义了针对实际监控对象进行监控时的相关动作,包括与设备的连接动作、断开动作、每个属性的获取方法;在每个Operation内部,由若干WrapperMethod组成,每个WrapperMethod是该通用监控对象Java类初始化时所声明的Java类所提供的方法,包括通信协议Java类所提供的方法或结果解析Java类所提供的方法;</operationDescriptors〉</ModelMBeanWrapper>。4、根据权利要求2所述的信息系统监控的方法,其特征在于,在所述XML文件中,根据实际需要对采用何种通信协议连接管理对象、对象有哪些属性、每个属性的获取方法是什么,根据实际需要进行增加、删除、修改,保证了监控模型具有可扩展性。5、根据权利要求1所述的信息系统监控的方法,其特征在于,在步骤1中所述的属性包括配置属性管理对象的配置信息;状态属性表明监控对象的当前状态;性能属性展现管理对象性能随时间连续变化的参数。6、根据权利要求1所述的信息系统监控的方法,其特征在于,在步骤2中。所述的连接管理对象、获取属性和结果解析都有对应的java对象实现,通过对象的组合使用,实现对管理对象属型的访问获取。7、根据权利要求1所述的信息系统监控的方法,其特征在于,在步骤2中,所使用的通信协议是ssh、telnet、JDBC、JMX、SNMP、TuxedoATMI、SQL*Net或特定的私有通信协议。8、根据权利要求1所述的信息系统监控的方法,其特征在于,在步骤2中,获取属性设定的动作是执行操作系统命令行、访问mib库、执行SQL语句、执行方法调用。全文摘要本发明是一种利用通用监控模型对信息系统监控的方法,包括步骤(1)将信息系统中的各种监控对象统一设定为通用管理对象进行描述,每个管理对象包括能够监控到的属性、获取属性的方法;(2)使用通用访问协议实现获取属性的方法;(3)通过配置方式定义管理对象及其访问,按照一定的语法要求,通过编写配置文件的方式对管理对象进行描述,完成配置文件编写后,通过程序生成与该类设备对应的java程序;该java程序每创建一个实例对象,即与现实中该类设备的一个实例设备对应,通过对该java对象的控制,可实现对实际设备的监控。文档编号H04L12/26GK101478445SQ20081016704公开日2009年7月8日申请日期2008年10月9日优先权日2008年10月9日发明者卞旭东申请人:卞旭东
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1