一种构建主机监控代理软件的方法

文档序号:6584264阅读:207来源:国知局
专利名称:一种构建主机监控代理软件的方法
技术领域
本发明涉及一种构建主机监控代理软件的方法,具体地说是一种。本发明涉及网管领域相关知识,适用于J2EE架构构建的企业网管软件系统,是一种远程获取主机监控信息的实现方法。
背景技术
传统的网管软件大多采用CS模式,当网络和设备越来越复杂,管理和维护就变成一件比较困难的事情,特别是在ITIL运维领域要求流程管理,明确责任人,这种模式已经不能再满足需要;而通过BS模式通过浏览器方式进行管理和维护将是企业的一种必然选择,通过J2EE架构开发的企业网管软件已经比较流行,通过Java实现代理软件通过代理软件和网管软件系统进行交互,是本发明要解决的问题。下面的发明内容主要描述的是通过Java实现的主机监控代理软件的实现方法。

发明内容
本发明的目的是提供一种构建主机监控代理软件的方法。本发明的目的是按以下方式实现的,通过Java语言构建用于主机信息收集的代理软件,通过该代理软件与J2EE架构的系统进行通信,代理软件主要有控制器模块、检测程序、对象容器、线程池、Socket连接池、数据采集类、代理配置文件几部分组成,代理软件主要完成数据的发送和接收工作,同时提供代理注册、数据缓存、参数管理的功能,通过提供四种接口分别与代理服务器的控制子系统、管理子系统、被管对象、远程服务器的交互,其中>控制器模块代理程序的功能类似于应用服务器,控制器模块在其中就相当于通常所说的MVC模式中的控制器层,控制器模块在初始化的过程中加载配置文件中的信息,通过配置文件获取后续的一些操作的阈值;控制器模块处于代理的核心位置,是代理程序运转的入口和枢纽,最重要的一点是实现映射请求到具体实现类功能,客户端发送的请求有很多,控制器模块根据接收到的请求路径找到对应的具体数据采集处理实现类,从对象容器中获取对象实例,生成数据采集任务,添加到线程池的工作队列中,等有空闲线程时执行数据采集操作,最后数据采集类采集数据处理后返回结果,完成了一个请求响应流程;>检测程序代理软件作为一个普通进程,在运行过程中可能会因为种种原因出现问题而不能正常提供监控服务,因此需要不断监控代理软件的运行状态,保证代理软件的服务能够持续可用,检测程序的目的就是为了监控代理软件的运行状态,检测程序不是一直运行的,是通过操作系统的定时任务定时调度的,它的作用主要有以下几点1.检查代理软件的状态,保证代理控制器总在运行,如果检测到代理软件没有运行或者不再响应,就根据特征码查找代理进程的PID,杀掉老进程并重启代理;2.定时去服务器检查最新版本,保持代理程序最新;3.定时从服务器下载最新的配置信息,其中主要包括1)服务器IP地址;2)服务器端口;3)本系统版本号;4)映射URL到代理类的信息;5)连接超时时间设置;6)其他信息;>对象容器在Java中所有的对象在使用前都必须先创建,否则会报异常,但是现在我们不必每次都重新创建对象,通过对象容器,在初始化的时候,把所有的对象预先加载进去,而每 次使用时,直接从对象容器中获取它并直接使用;>线程池线程池就是用来存放线程的对象容器,目的是为了最大程度的复用线程资源,代 理软件处理大量来自外部的小任务,即单个任务处理的时间很短而请求的数量却很多;构 建代理软件的一个简单的模型通常是每当一个请求到达就创建一个新线程,然后在新线 程中为请求服务;通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上,通过 适当地调整线程池中的线程数目,当请求的数目超过线程池的最大大小时,随后新到的请 求就一直等待,直到获得一个空闲线程来处理为止,从而可以防止资源不足;> Socket 连接池一般socket连接有以下两种方式长连接和短连接长连接当数据发送完成后socket连接不断开,一直保留到异常或者是程序退出 为止,长连接需要定时向服务器Ping数据,以保证socket连接畅通,当ping不通服务器 时,必须重新开启连接;短连接当一次数据发送完毕后,主动断开连接,每次发送数据都要一次连接、断 开操作,这种方式的优点是对服务器的资源占用相对来说比较小,但是由于每次都要重新 连接,速度开销上也比较大,这种方式对于那种不须要经常与服务器交互的情况下比较适 用;实现Socket连接池功能,是在连接池中维护多个Socket长连接,通过连接池来提 高Socket对象的复用性,最大限度的提升Socket的通信性能;采用Socket连接池,建立Socket连接并认证后,将socket连接缓存到池中,连接 池负责维护socket的有效性,通过发送ke印alive包,并维护连接的生命周期,包括定期重 建,这样取连接时得到的就是连接池中维护的Socket长连接;>数据采集类 采集类使用Java语言实现,实现统一接口,对外统一调用入口,采集后返回数据 格式为xml形式,方便传输和解析,提供自定义接口模式和规范,支持自定义采集类;>代理配置文件在控制器模块中启动多线程程序监控网络状态,当检测到网络连接中断后启动数据本地记录功能,根据配置文件中配置的数据采集周期,采集数据并记录到本地文件中,数据记录中包含时间戳信息,数据文件统一以采集类名+系统日期+. xmls的形式命名,在一 个特定文件中记录网络中断的开始时间,待网络恢复正常后再一起上传到服务器上,本地 的数据记录历史文件定期删除,只保留一段时间的记录;采用java语言编写的代理软件,代理软件能实现和远程J2EE架构系统的信息交互。代理软件具有自管理功能,自行检查服务有效性。代理软件采集主机实时信息,与监控服务器一起实现B/S模式监控远程主机的目的,并能提高数据收集量和可靠性。
本发明的有益效果是1)本发明实现的是B/S模式网管软件代理的实现方法,网管服务器可以和部署在设备上的代理软件进行实时交互,从而收集设备信息。2)本发明采用Java语言开发,相比传统CS模式软件多少采用C语言进行开发,本发明的代理软件能够很容易的和J2EE架构的软件系统进行交互。3)本发明实现的代理软件能够轻松部署在多种环境下,统一的接口方式,主要是来自Java本身强调的是“一次编译、到处执行”的特性。


图1是主机监控代理软件的结构示意图。
具体实施例方式参照附图对本发明的方法作以下详细的说明。代理软件主要有控制器模块、线程池、Socket连接池、对象容器、数据采集类、代理 检测程序、配置文件等几部分组成。代理软件主要完成数据的发送和接收工作,同时提供代 理注册、数据缓存、参数管理等功能,通过提供四种接口分别和代理服务器的控制子系统、管理子系统、被管对象、远程服务器的交互。>控制器代理程序的功能类似于应用服务器,控制器在其中就相当于通常所说的MVC模式中的控制器层。控制器在初始化的过程中加载配置文件中的信息,通过配置文件获取后续 的一些操作的阈值。控制器处于代理的核心位置,是代理程序运转的入口和枢纽。最重要的一点是实现映射请求到具体实现类功能。客户端发送的请求有很多,控制器根据接收到的请求路径 找到对应的具体数据采集处理实现类,从对象容器中获取对象实例,生成数据采集任务,添加到线程池的工作队列中,等有空闲线程时执行数据采集操作。最后数据采集类采集数据 处理后返回结果。完成了一个请求响应流程。>检测程序代理作为一个普通进程,在运行过程中可能会因为种种原因出现问题,不能正常 提供监控服务。因此需要不断监控代理的运行状态,保证代理的服务能够持续可用。检测 程序的目的就是为了监控代理程序的运行状态。检测程序不是一直运行的,是通过操作系统的定时任务定时调度的。它的作用主要有以下几点 1.检查代理的状态,保证代理控制器总在运行。如果检测到代理没有运行或者不 再响应,就根据特征码查找代理进程的PID,杀掉老进程并重启代理。2.定时去服务器检查最新版本,保持代理程序最新。3.定时从服务器下载最新的配置信息。其中主要包括4.服务器IP地址5.服务器端口6.本系统版本号7.映射URL到代理类的信息(多条)8.连接超时时间设置9.其他信息例如URL映射到代理类aix-overal 1 = com. 1 c . monitor, host, a i χ. agent, overall. AIXOverAlIAgentAction>对象容器在Java中所有的对象在使用前都必须先创建,否则会报异常。但是现在我们可以 不必每次都重新创建对象了。通过对象容器,可以在初始化的时候,把所有的对象预先加载 进去。而每次使用时,可以直接从对象容器中获取它并直接使用。通过使用对象容器,避免了大量的对象创建与销毁操作的开销,减少了资源的使 用,减轻了 JVM进行垃圾回收操作的负担,延缓了因垃圾回收操作带来的STW效果的影响, 提高了获取对象的性能,提升代理程序的响应速度。>线程池线程池就是用来存放线程的对象容器,目的是为了最大程度的复用线程资源。代 理程序处理大量来自外部的小任务,即单个任务处理的时间很短而请求的数量却很多。构建代理程序的一个简单的模型通常是每当一个请求到达就创建一个新线程, 然后在新线程中为请求服务。通常,对于原型开发这种方法工作得很好,但如果试图部署以 这种方式运行的代理程序,那么这种方法的缺陷就很明显。每个请求对应一个线程的不足 之一是为每个请求创建一个新线程的开销很大;为每个请求创建新线程的代理程序在创 建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资 源更多。除了创建和销毁线程的开销之外,活动的线程也消耗系统资源。在一个JVM里创 建太多的线程可能会导致系统由于过度消耗内存而用尽内存或“切换过度”。为了防止资源 不足,代理程序需要一些办法来限制任何给定时刻可以处理的最大请求数目。 线程池为线程生命周期开销问题和资源不足问题提供了解决方案。通过对多个任 务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,因为在请求到达时线程已 经存在,所以无意中也消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使应 用程序响应更快。而且,通过适当地调整线程池中的线程数目,当请求的数目超过线程池的 最大大小时,随后新到的请求就一直等待,直到获得一个空闲线程来处理为止,从而可以防 止资源不足。
> Socket 连接池一般socket连接有以下两种方式长连接和短连接,其中长连接当数据发送完成后socket连接不断开,一直保留到异常或者是程序退出为止。这种方式的优点是不用每次去发起连接断开,在速度上可以比短连接要快一些,但是 相对来说对服务器的资源压力也要大些。长连接用的范围很广,比如游戏系统,qq等等,长 连接一般需要定时向服务器Ping数据,以保证socket连接畅通。当ping不通服务器时, 必须重新开启连接。短连接当一次数据发送完毕后,主动断开连接,每次发送数据都要一次连接、断 开操作,这种方式的优点是对服务器的资源占用相对来说比较小,但是由于每次都要重新 连接,速度开销上也比较大,这种方式对于那种不须要经常与服务器交互的情况下比较适用。实现Socket连接池功能,在连接池中维护多个Socket长连接。目的通过连接池 来提高Socket对象的复用性,最大限度的提升Socket的通信性能。通常建立Socket连接的开销很大,如果使用短连接,即需要时建立,完成操作后 立即断开,会导致代理在建立连接上多花很多资源,并且响应速度较慢。分析后决定采用 Socket连接池,建立Socket连接并认证后,将socket连接缓存到池中,连接池负责维护 socket的有效性(通过发送ke印alive包),并维护连接的生命周期(定期重建)。这样取 连接时得到的就是连接池中维护的Socket长连接,性能提升的效果立竿见影。>数据采集类采集类使用Java语言实现,实现统一接口,对外统一调用入口。采集后返回数据 格式为xml形式,方便传输和解析。提供自定义接口模式和规范,支持自定义采集类。>代理配置文件在控制器中启动多线程程序监控网络状态,当检测到网络连接中断后启动数据本 地记录功能。根据配置文件中配置的数据采集周期,采集数据并记录到本地文件中。数据 记录中包含时间戳信息,数据文件统一以采集类名+系统日期+.mis的形式命名。在一个 特定文件中记录网络中断的开始时间,待网络恢复正常后再一起上传到服务器上。本地的 数据记录历史文件定期删除,只保留一段时间的记录。
权利要求
一种构建主机监控代理软件的方法,其特征在于,通过Java语言构建用于主机信息收集的代理软件,通过该代理软件与J2EE架构的系统进行通信,代理软件主要有控制器模块、检测程序、对象容器、线程池、Socket连接池、数据采集类、代理配置文件几部分组成,代理软件主要完成数据的发送和接收工作,同时提供代理注册、数据缓存、参数管理的功能,通过提供四种接口分别与代理服务器的控制子系统、管理子系统、被管对象、远程服务器的交互,其中控制器模块代理程序的功能类似于应用服务器,控制器模块在其中就相当于通常所说的MVC模式中的控制器层,控制器模块在初始化的过程中加载配置文件中的信息,通过配置文件获取后续的一些操作的阈值;控制器模块处于代理的核心位置,是代理程序运转的入口和枢纽,最重要的一点是实现映射请求到具体实现类功能,客户端发送的请求有很多,控制器模块根据接收到的请求路径找到对应的具体数据采集处理实现类,从对象容器中获取对象实例,生成数据采集任务,添加到线程池的工作队列中,等有空闲线程时执行数据采集操作,最后数据采集类采集数据处理后返回结果,完成了一个请求响应流程;检测程序代理软件作为一个普通进程,在运行过程中可能会因为种种原因出现问题而不能正常提供监控服务,因此需要不断监控代理软件的运行状态,保证代理软件的服务能够持续可用,检测程序的目的就是为了监控代理软件的运行状态,检测程序不是一直运行的,是通过操作系统的定时任务定时调度的,它的作用主要有以下几点1.检查代理软件的状态,保证代理控制器总在运行,如果检测到代理软件没有运行或者不再响应,就根据特征码查找代理进程的PID,杀掉老进程并重启代理;2.定时去服务器检查最新版本,保持代理程序最新;3.定时从服务器下载最新的配置信息,其中主要包括1)服务器IP地址;2)服务器端口;3)本系统版本号; 4)映射URL到代理类的信息;5)连接超时时间设置;6)其他信息;对象容器在Java中所有的对象在使用前都必须先创建,否则会报异常,但是现在我们不必每次都重新创建对象,通过对象容器,在初始化的时候,把所有的对象预先加载进去,而每次使用时,直接从对象容器中获取它并直接使用;线程池线程池就是用来存放线程的对象容器,目的是为了最大程度的复用线程资源,代理软件处理大量来自外部的小任务,即单个任务处理的时间很短而请求的数量却很多;构建代理软件的一个简单的模型通常是每当一个请求到达就创建一个新线程,然后在新线程中为请求服务;通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上,通过适当地调整线程池中的线程数目,当请求的数目超过线程池的最大大小时,随后新到的请求就一直等待,直到获得一个空闲线程来处理为止,从而可以防止资源不足;Socket连接池一般socket连接有以下两种方式长连接和短连接长连接当数据发送完成后socket连接不断开,一直保留到异常或者是程序退出为止,长连接需要定时向服务器ping数据,以保证socket连接畅通,当ping不通服务器时,必须重新开启连接;短连接当一次数据发送完毕后,主动断开连接,每次发送数据都要一次连接、断开操作,这种方式的优点是对服务器的资源占用相对来说比较小,但是由于每次都要重新连接,速度开销上也比较大,这种方式对于那种不须要经常与服务器交互的情况下比较适用;实现Socket连接池功能,是在连接池中维护多个Socket长连接,通过连接池来提高Socket对象的复用性,最大限度的提升Socket的通信性能;采用Socket连接池,建立Socket连接并认证后,将socket连接缓存到池中,连接池负责维护socket的有效性,通过发送keepalive包,并维护连接的生命周期,包括定期重建,这样取连接时得到的就是连接池中维护的Socket长连接;数据采集类采集类使用Java语言实现,实现统一接口,对外统一调用入口,采集后返回数据格式为xml形式,方便传输和解析,提供自定义接口模式和规范,支持 代理配置文件在控制器模块中启动多线程程序监控网络状态,当检测到网络连接中断后启动数据本地记录功能,根据配置文件中配置的数据采集周期,采集数据并记录到本地文件中,数据记录中包含时间戳信息,数据文件统一以采集类名+系统日期+.xmls的形式命名,在一个特定文件中记录网络中断的开始时间,待网络恢复正常后再一起上传到服务器上,本地的数据记录历史文件定期删除,只保留一段时间的记录。F2009102313279C00011.tif,F2009102313279C00012.tif,F2009102313279C00021.tif,F2009102313279C00022.tif,F2009102313279C00023.tif,F2009102313279C00024.tif,F2009102313279C00031.tif
2.根据权利要求1所述的方法,其特征在于,采用java语言编写的代理软件,代理软件 能实现和远程J2EE架构系统的信息交互。
3.根据权利要求1所述的方法,其特征在于,代理软件具有自管理功能,自行检查服务 有效性。
4.根据权利要求1所述的方法,其特征在于,代理软件采集主机实时信息,与监控服务 器一起实现B/S模式监控远程主机的目的,并能提高数据收集量和可靠性。
全文摘要
本发明提供一种构建主机监控代理软件的方法,通过Java语言构建用于主机信息收集的代理软件,通过该代理软件与J2EE架构的系统进行通信,代理软件主要有控制器模块、检测程序、对象容器、线程池、Socket连接池、数据采集类、代理配置文件几部分组成,代理软件主要完成数据的发送和接收工作,同时提供代理注册、数据缓存、参数管理的功能,通过提供四种接口分别与代理服务器的控制子系统、管理子系统、被管对象、远程服务器的交互,通过该方法可以轻松实现获取主机监控信息的目的。
文档编号G06F9/44GK101799751SQ20091023132
公开日2010年8月11日 申请日期2009年12月2日 优先权日2009年12月2日
发明者宋智强, 武志强 申请人:山东浪潮齐鲁软件产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1