一种面向用户的系统资源监测模块的设计和实现

时间:2022-07-17 09:01:00

一种面向用户的系统资源监测模块的设计和实现

摘要:该文分析了用户在对分布式系统资源进行管理时面临的普遍问题,提出了使用中间件WebService实现的系统资源监测模块,以图形化、动态化的方式将资源占用呈现给用户,描述了模块的结构并给出了模块中关键技术解决方法。

关键词:分布式; 系统资源 ;监测 ;WebService ;池模式

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)22-6261-03

Design and Realization of a Customer-facing System Resource Monitoring Module

WANG Ting1,2, LI Xun1,2, LU Tao1,2

(1.Key Labs of Ministry of Information Internet Security, Public Security of Ministry, Shanghai 200000, China;2.The Third Research Institute of Ministry of Public Security, Shanghai 200000, China)

Abstract: The paper analyzes the common problem that customers are faced with when they manage the distributed application system, proposes the resource monitoring module using webservice middleware, presents resource data with animated charts, describes the module’s architecture and gives the key technology solutions.

Key words: distributed; system resource; monitor; webservice; pool model

小型应用系统部署在几台甚至一台服务器上,随着计算机应用系统的广泛应用,系统向大型化的发展,系统处理任务越来越庞大背景下,对系统性能和安全性要求也日益增强,特别是分布式系统应用日益广泛,要求服务器功能更加单一和专业化,例如web服务器、应用服务器、数据库服务器等,现在往往一种应用系统由几十台服务器甚至更多组成。

实时掌握应用系统中各个环节的资源,包括CPU、内存、硬盘等的占用情况对于保障系统运行有着重要作用。应用系统可能由于软件编码缺陷导致内存泄漏,资源持续占用而导致一段时间后系统不能正常提供服务;系统遭受到网络攻击后也会导致系统资源被消耗,典型的例如DDOS攻击和蠕虫攻击,不断消耗网络资源和服务器的内存资源,导致系统停止服务甚至崩溃;另外,对于正常运行的系统,由于大量的备份数据和系统日志文件占用磁盘空间,也会造成系统因磁盘空间不足而出错。此外,经过对系统中各服务器资源占用进行统计分析,还可以掌握系统各个环节的资源占用规律,作为性能优化的重要依据。

1 资源监测模块设计目标

一个典型的企业级的应用系统包括web服务器、认证服务器、应用服务器、数据库服务器、消息队列服务器,有些系统包括分布式的节点执行同一任务。

资源监测模块的设计目标是用户能实时地查看各个服务器的资源占用情况,包括磁盘、内存、CPU等,一旦服务器的资源占用发生异常,触发相关模块告知用户。

在传统的系统中,一台服务器担任多个角色,获得一台服务器的资源容易,而在异构系统中,由于各个服务器的操作系统、数据库软件、应用软件的实现方式不同,需要根据系统的不同自适应地获得服务器的资源占用量。而且,需要使用一种跨平台的中间件,能够提供不同平台间的访问和数据传递。

2 WebService

WebService是一种应用广泛的消息传递的框架,WebService使用WSDL对接口服务进行描述,消息以SOAP协议封装,基于XML格式,使用网络协议传输。它主要有以下优点:

1) 支持异构系统。包括.net、Websphere、webLogic、JBoss等平台都提供对WebService标准的支持,使用C、java、php等多种编程语言都可以实现WebService接口功能。

2) WebService一般使用xml通过http传输数据,由于http是最常用的网络传输协议之一,WebService容易穿透防火墙,不需要进行网络的特别设置,对分布式系统中常有的异构网络环境尤为适用。

3) WebService安全性设置容易,资源占用少。接口可以通过soapHeader中设置用户身份验证,编码简单,另外ws-security标准定义了SOAP消息传递的安全模型和加密技术,易于实现。

3 资源监测模块结构

资源监测模块包括各服务器的节点接口、资源采集、资源管理中心、用户交互单元和异常通知单元。节点接口和资源采集部署在各个服务器上,取得各节点资源并通过接口提供给资源管理模块调用。资源管理中心是决策者,按照一定的调度算法调用各节点接口,将返回的各节点资源占用数据处理后存入数据库,服务器资源出现异常时调用异常通知单元。用户交互单元实时显示各服务器的资源占用并接收用户对系统的配置。

资源监测模块结构如图1。

各个模块的功能和实现如下:

1) 节点接口:各个被监控的服务器提供一个节点接口,接口使用 webService中间件实现,将消息封装入SOAP,采用基于http协议对XML进行传递。所有接口使用统一的wsdl服务描述文件,提供完全相同的接口服务,供资源统一管理中心统一调用,便于提高系统的扩展性。

2) 资源采集:获得本节点的资源占用数据,提供给节点接口。资源采集周期性地对被检测节点服务器的资源进行采样并进行平滑处理。由于各节点的操作系统不同,资源采集方式需要根据考虑服务器的异构性。

3) 资源管理中心:系统资源监测模块的决策者,根据开关量和轮循时间调用各服务器的节点接口,与资源采集通信,获得资源数据,保存入库。主要过程包括决策系统和轮循系统。

资源管理中心与各个资源采集之间使用pull模式进行交互,即资源管理中心判断开关量,周期性地与各节点进行通信,即周期性地pull模式。

决策系统的算法是:

While(开关量 )

{ 轮询

Sleep(间隔时间)

轮询系统在达到周期时间点时启动,调用各个服务器上的节点机接口,获取节点机的实时资源占用数据,分析处理,将资源数据与设定阈值比较,一旦超过系统阈值,触发异常通知单元,并将资源数据保存入库。

4) 异常通知单元:通过轮询系统以事件驱动的方式触发,一旦达到设定阈值,启动异常通知单元。异常通知单元将资源异常状况及时告知系统管理员,通过给管理员发送短信或Email的方式通知管理员发生资源异常的服务器及详细资源情况。

5) 用户交互单元主要实现以下两方面的功能:

对资源管理平台中的常量进行设置,例如决定是否进行系统检测的开关量、轮循时间、阈值参数、管理员Email等,提高系统的易配置性。

实时显示服务器资源占用情况,以及图形化显示一段时间各个服务器的资源占用和统计信息,以提高用户体验。

4 关键技术实现

1) 系统资源采样

资源采集需要实时获取本机系统资源占用数据,而不同系统提供不同方式供调用获得这些数据,例如linux系统用户可以通过命令行获得资源占用信息,windows系统有外部提供的dll可调用获取系统资源,另外,有些系统自带的wmic.exe 可以获取系统的基本信息。资源采集必须根据服务器的类型调用相应的资源获取方式,进行分析计算,其实现如下:

获得系统类型:System.getProperty(“os.name”)

对Linux系统,则运行命令行并获得输出:

Process p = Runtime.getRuntime().exec(command);

BufferedReader br = new BufferedReader(new InputStreamReader(p

.getInputStream()));

通过对BufferedReader结果进行解析计算,可以得到占用率等信息。

其中,获得CPU和内存信息的命令行command为 top Cb Cn 1,获得系统硬盘信息的命令行为 df Cl,对包括redhat、gentoo、ubunto、红旗等linux系统都可使用以上命令行获得本机资源情况。

对windows系统,可通过调用相关的dll获取系统资源。 XP版本后的系统自带windows管理程序命令行wmic.exe提供系统的基本信息,采样时可以调用该命令,例如

Wmic.exe process get Caption,CommandLine,KernelModeTime,UserModeTime 可以获得所有进程的运行状态,进行采样处理和结果解析可以得到系统当前CPU的占用率等信息。

2) Webservice中池模式的应用

由于资源管理平台调用各个服务器的Webservice接口进行通信,根据服务器的wsdl服务描述文件,生成soap请求。Webservice的调用先根据服务地址生成service,再生成服务soap client对象,这样每次调用都会产生类实例化和类回收的开销。由于实时性要求,资源管理平台调用各服务器上节点接口的时间周期短,频繁操作必然会产生的大量开销,容易产生大量内存占用,影响系统性能。

资源管理中心采用对象池模式,将调用各个服务器节点接口的的soap client对象保存到池中,池里的所有对象只有在服务器启动时才实例化一次。调用时,根据节点接口的Webservice服务地址找到池里相应的soap client对象,取出使用,当添加了新的服务器节点时,池中没有相应的soap client对象,则会在池中增加该对象。调用结束后,将soap client对象归还池,释放占用。对象池通过这种方式控制使用中的soap client类的数量,避免产生大量的冗余类,影响资源管理平台的性能。soap client池的定义为

ServerPerformanceSoapPool{

//建立新的soap client对象

ServerPerformanceSoap createServerPerformanceSoap(String strIP, String wsURI)

//获得服务器对应的soap client对象

synchronized ServerPerformanceSoap getServerPerformanceSoap(String strIP, String wsURI)

//释放soap client对象

synchronized void releaseServerPerformanceSoap(String strIP , ServerPerformanceSoap port)

}

3) 用户终端显示

服务器系统资源实时数据要以一种形象化的方式显示给用户,例如饼状图、柱状图。并且需要对一段时间的数据进行统计显示,例如折线图。传统的方式是在服务器端先生成图片,再传送到客户端,频繁更新图片会给服务器负载造成影响,图片占用空间大,网络传送和浏览器加载耗时长。

Fusionchart是Infosoft Global 公司的一款免费的图表组件解决方案,跨浏览器、跨平台,能被JSP、ASP、PHP等多种语言调用实现。FusionChart工作原理主要是通过后台传送xml数据源给报表前台,flash 接收复杂数据并渲染成最终的图表。通过Adobe Flash来实现图形化、动态化及交互,增强各类报表的显示效果。图表生成是由客户端实现,而Flash插件是各种浏览器的最常用插件。服务器端只需要传送重建的SWF和XML,而且客户端对SWF有缓存功能,更新时只需要更新数据,而不用每次发送SWF。采用FusionChart实现的服务器资源实时占用图和资源统计图分别如图2、图3。

6 结论

在分布式应用系统中,实时查看各服务器的系统资源占用对分析系统业务流量,维护系统稳定和保障系统安全有重要作用。而面向用户的系统资源监测模块以集中管理和可视化的方式,给用户提供查看各节点服务器系统资源占用情况,模块与各节点的通信采用基于的soap协议的webservice规范,数据采样考虑了多种操作系统,使用FusionChart提高显示效果。面向用户的系统资源监测模块设计可用于多种应用系统,实现系统用户便捷地查看整个系统各节点运行情况的功能。

参考文献:

[1] 杨刚,随玉磊.面向云计算平台自适应资源监测方法[J].计算机工程与应用,2009:45(2).

[2] Henning M.Choose Middleware:Why Performance and Scalability do (and do not) Matter[D].Zeroc,2009.

[3] 马晓晨,孔小利.一种应用透明的分布式系统性能分析方法[J].计算机工程与应用,2008,44(17).

上一篇:系统模拟与仿真课程仿真实例教学探索 下一篇:Tuxedo中间件在电信计费系统中的应用设计方案