随着计算机技术和网络应用技术的飞速发展,网络的应用越来越复杂,建立在网络上的分布应用系统越来越多,网络应用的复杂性和异构性越来越高,管理也变得越来越困难。因此有必要对网络应用的运行状况进行监控,及时发现网络应用的异常情况,准确判断异常发生位置,然后采取相应措施维护,以保证网络应用的正常运行。很多国家机关、企事业单位都建立了各种各样的网络应用监测系统,用来监控网络应用的运行状况。由于网络应用协议的规范化,网络应用监控技术相对比较成熟,但针对网络应用层以上的异构的、分布的、综合性应用系统运行监控技术相对比较薄弱。
例如,上海大学房产地图应用系统集成了由不同部门人员管理的多个子系统,包括分布在小问校区的SAP/ECC系统小动产管理模块、SAP/EP网站系统、基于Flex开发的校园地图系统、两个关系数据库以及多个独立的业务应用服务组件,运行在多台服务器和虚拟机上。其中任何一个分布的模块或子系统故障就足整个系统的故障,如校园网、应用服务器软硬件、数据库和Web Service的运行有任何不稳定,将使得Flash前台展现系统不能正常工作,影响到用户的使用。由于网络应用条件复杂,缺少应用系统检测工具,出现故障时往往难以迅速判断问题的原因,一直以来给系统管理员造成很大维护压力。校同网络是房产地图系统可靠运行的前提,本文目标是针对网络应用检测难题,设计开放、简单、有效和使用方便的网络应用检测工具。
1.检测系统的设计
1.1需要解决的关键问题
网络应用检测的目的是搜集网络应用运行的各项信息,使管理人员能够及时发现异常情况,分离、解决应用系统故障,对网络应用进行维护。目前大多数网络检测系统的检测目标是服务器、路由器和交换机等网络设备,检测内容主要是:①网络的数据流量测量;②网络安全和病毒防护等,检测主要集中在底层,检测常用的方法有远程网络应用监控(RMON)、XFIow和探针。目前大多数数据库检测系统的检测目标丰要是数据库的运行性能和日志,大多数Web Service监测系统的检测日标主要足Web Service的平均反应时间、服务使用次数等服务参数。
本文研究目标是应用系统的检测。以上海大学房产地图应用系统为实例,设计~个能够对应用系统的各个子系统与独市模块运行状态进行实时监控的软件,自动地对网络应用情况进行全面检测,对检测结果进行初步的统计处理,并在网络应用出现较严霞问题时发出异常警报,提醒管理人员进行维护。为了让网络应用综合检测系统能够有效帮助管理人员检测监控网络应用状态,本文对它提出了以下几个具体设计指标:(1)准确性网络应用检测数据要准确:(2)及时性网络应用检测数据要及时获得与发布;(3)自动化自动检测网络应用运行状态;(4)可扩展性可以增加、修改和删除检测项目。
通过分析,本文认为需解决的关键问题丰要是:
a.应用系统检测涉及许多本地进程的远程诊断,因涉及安全问题不宜直接检测,如何对独立应用子系统进行简单、有效检测需寻找新方法;
b.从系统柔性考虑,需设计合理框架,适应检测功能范围变化;
c.收集到的综合性分布应用系统原始状态信号又多又乱,如何对收集的大量实时检测数据进行分析,需要设计新算法;
d.从系统可靠性考虑,系统管理员应先于普通用户获取预警信息,如何及时发布预警信息需要寻找新渠道;
1.2 检测系统设计构思
首先,本文提出应用系统测试的简化方法一一应用服务组合测试法。本文假设一个分布式应用系统如正常运行,必要前提条件是计算机网络运行正常、安装应用软件的操作系统运行正常以及应用软件本身至少一个模块运行正常。应用服务组合测试法使用一组应用服务模块检测替代一个应用系统本身的检测,应用服务组合包括:计算机网络枪测模块、系统软件检测模块、应用软件检测模块。从便于实施考虑,各监测模块都统一封装为Web Service。
网络应用检测系统跨越小同平台使用不同工具开发,有较高难度。从降低开发复杂度的角度,本文提出建立数据采集、数据分析、业务处理三层框架结构。如图1所示:
图1 系统架构框图
数据采集层:由应用系统连接状态采集模块、数据库连接状态采集模块、Web Service连接状态采集模块等模块组成。各应朋服务模块根据注册数据库lnfo中的配置信息,采集应用系统服务器、数据库和Web Service的连接状态,如能否连接,连接所需要的时间等,时间单位为毫秒。测试结果统一返回分析处理层处理;
分析处理层:由检测纪录持久化模块、异常警报发送模块、故障推断模块、采集数据分析模块、注册信息读取模块等模块组成,负责将数据采集层获取的网络应用状态数据进行分析处理,计算出每个检测项日的响应时间、平均响应时间、连接成功次数、连接失败次数、总连接次数、最后一次成功连接时间等统计信息,并对故障原凶进行分析推理。分析结果交业务展现层处理。
业务展现层:由应用系统连接状态展现模块、数据库连接状态展现模块、Web Service连接状态展现模块、检测纪录持久化状态展现模块和异常警报发送状态展现模块等模块组成。负责响应用,操作,调用网络应用检测方法,显示数据分析处理结果,将检测纪录持久化到数据库Info中,将网络应用异常警报通过电子邮件和手枕短信等方式发送给网络应用管理人员等。
注册数据库Info用来存储软件的配置信息,检测记录数据库Detection Record用于存储检测记录和异常警报发送纪录等相关记录信息。
2.检测系统的实现
网络应用综合检测系统使用C#进行开发,是一款Windows窗体应用程序,在安装了.NET Framework 2.0或更高版本的Windows主机上均可以运行。被检测的网络应用主要由业务心系统、关系数据库和独市业务模块组成。应用服务组合测试泫对每种类氆都采用规范的网络测试、系统测试与应用测试模块完成组合测试目的。
2.1 应用服务组合测试的实现
2.1.1 业务应用系统运行状态榆测
网络检测:目前TCP/IP协议是网络操作系统的通用组成模块,通过比较网关与应用系统IP的联通即检测出企业网或校园网运行状态:程序进行TCP连接,来检测心用系统所在服务器的运行状态。如果服务器能响应TCP连接,则判定服务器运行正常-否则判定服务器出现异常。要建立TCP连接,需耍知道该服务器的名称和使用的端口,根据服务器名称和端口新建TcpClient对象,如果新建TcpClient对象成功,说明服务器运行正常。
系统检测:同上,采用通用方法测试系统IP地址与工作端口即可验证操作系统工作状况:系统粱构框图应用检测:封装应用系统的一个功能模块,进行检测即可间接验证该系统的运行状况。例如要测试SAP/ECC应用系统是否被启动,可以封装其BO的一个BAPI或用FRC开发一个Web Service,检测该模块正常则系统已启动,运行正常。
2.1.2关系数据库运行状态检测
网络检测与系统枪测:同上;
应用检测:程序通过建立与数据库的连接,来枪测数据库所在服务器的运行状态。如果数据库连接建立成功,则判定数据库运行正常,否则判定数据库出现异常。要建立数据库连接,需要知道该数据库的类型(SQL Server、Access、Oracle和MySQL等)和相应的连接字符串。
对于不f司的数据库类型,建立数据库连接的方法并不一样。IDbConnection是.NET Framework中数据库连接类的公共接口,所有数据库连接类均实现了IDbConnection。常用的几种数据库和它们对应的数据库连接类如表1所示:
表1几种常用数据库对应的数据库连接类
本文根据数据库类型和连接字符串新建数据库连接对象,赋予IDbConnection类型引用conn,然后调用corm的Open()方法来测试相应的数据库是台运行正常。
2.1.3 业务Web Service模块运行状态检测
网络检测与系统检测:同上;
应用检测:程序通过远程调用Web Service中的某个方法,来检测Web Service的运行状态。如果Web Service能够正常返州结果,则判定Web Service运行正常,否则判定Web Service出现异常。选取用来测试的方法因不同的WebService而异,基本的选择原则是:(1)该方法只用于查询数据,即调用该方法小会改变系统的数据;(2)该方法的功能应尽叮能地简单,即返州数据量小,运行时间短,给WebService所在服务器带来的负载尽可能小。
.NET Framework调用Web Service通常的做法是“添加Web应用”,让Visual Studio环境自动牛成服务代理,然后调用相应的Web Service。这秤调用方法的缺点是程序和提供Web Service的URL、方法名、参数绑定在一起了,程序缺乏可扩展性,因此本文需要一个在.NET Framework中动态调用Web Service的方法。本文采用以F方法实现了.NETFramework动态调用Web Service的方法191:(1)获取WSDL:(2)生成客户端代理类代码;(3)设定编译参数:(4)编译代理类;(5)生成代理实例,并调用方法。不同的Web Service的参数个数并不相同,本文将所有参数值拼接成一个字符串储存在表WebServicelnfo的Args字段中,各个参数之间用“,”分隔符分开。程序读取并解析Args字段,得到相应的参数值,再测试Web Service。
2.2 数据结构与模块设计
2.2.1 检测系统注册数据结构
本文用一个础n数据库Info储存配置数据,应用系统服务器、数据库和Web Service的配置数据分别放在表Serverlnfo、表DataBaselnfo和表WebServicelnfo中。
其中IsUsed表明是否检测该项目,NodelD则用于网络应用故障分析,网络应用故障分析将在后面展开。程序初始化时,先从以上三张表中读取配置数据,填充到用户界面的相应表格中。当需要增加、修改或删除检测项目时,管理人员只需要修改数据库中的相应纪录。因此网络应用综合检测系统可以轻易地变更检测项目,具有良好的扩展性。能够很快地在新的环境下应用。
2.2.2多线程技术在检测系统的应用
对应用系统、数据库和Web Service的运行状态进行检测,需要消耗不少的时间,特别是在服务器繁忙或出现异常情况时,检测时间会比较长。如果对检测项目进行顺序检测,将会使检测时问变得漫长和低效率。另外,如果程序执行耗时较长的任务,会导致用户界面失去响应,带来很差的用户体验。因此,需要采用多线程技术来提高检测效率,提供良好的用户体验。
类Info是检测基类.它的Check()方法负责检测各个检测项目。Check()是个虚方法,在各个子类中被重写。子类的CheckO方法新建一个BackgroundWorker对象,在BaekgroundWorker对象的DoWork事件中调用子类私有的检测方法DoCheck0。并在BackgroundWorker对象的RunWorkerAsync方法中把检测参数对象(CheckObj类型)传入。DoChec“)方法将检测结果(检测结果时间End、连接是否正常lsSuccess等属性)写入到检测参数对象。然后在BackgroundWorker对象的RunWorkerCompleted事件中,调用子类的检测结果处理方法。检测结果处理方法主要有Count()、PfintRecord()、WfiteReeord()、SendMail()和SendMMS0等。
每个检测进程除了把检测数据和统计数据写入到表格中相应的行以外,还需要共用一些公共资源,如在详细信息选项乍中写入检测信息等,本文对相应函数进行同步。
3.检测系统的异常分析与预警
3.1 故障分析树
网络应用异常检测只能得到刚络应用故障的表面信息,网络应用管理人员需要对这些异常信息进行分析推理,才能得到网络应用故障的真正原因,本文通过建立嘲络应用故障分析树,可以帮助网络应用管理人员进行分析推理,如图2所示:
图2 故障分析树示例
网络应用故障分析树是一个树形结构.它有以下特点:
①有且只有一个根节点;
②除了根节点,每个节点有且只有一个父节点:
③每个节点可以有任意多个子节点;
④检测项目节点都是叶节点(没有子节点的节点),叶节点也都是检测项目节点;
⑤父节点正常是子节点正常的必要条件:
网络应用故障分析树如图3所示:
网络应用故障分析树的数据结构对应于数据库中的表FaultAnalysis,其中ParentNodelD是该节点的父节点编号。NodeDepth表明该节点的深度,根节点的NodeDepth为0,子节点的NodeDepth等于父节点的NodeDepth加上1。lsOK字段表明该节点的状态,有三种值:①“正常”;②“不正常”:③“可能不正常”。
由网络应用故障分析树的特点,我们可以得到以下推理规则:
(1)所有叶节点的IsOK值只能是“正常”或“不正常”:因为它们的IsOK值是直接从检测信息得来的:
(2)如果某个枝节点有一个或多个子节点的lsOK值为“正常”,则它的lsOK值也为“正常”。
(3)如果某个枝节点的所有于节点的IsOK值都不是“正常”,则该节点可能正常也可能不正常,即它的lsOK值应该为“可能不正常”。
根据以上推理规则,可以得到相应的故障分析算法:
(1)获取所有节点NodeDepth的最大值;
(2)根据NodeDepth逐层推断各个节点的IsOK值,直到根节点。
表Serverlnfo、DataBaselnfo和表WebServiceInfo中都有NodelD字段。这个字段参照表FaultAnalysis中的NodelD主键,故障分析树可根据NodelD找到相应叶节点的lsOK值。
故障分析完毕后,下一步是生成可能故障列表,生成可能故障列表的故障推断算法。
从根节点开始,根据NodeDepth逐层往下寻找lsOK状态值不为“正常”的节点。如果某个节点的IsOK值为“正常”。则往下寻找它的IsOK值不为“正常”的子节点。直到叶节点为止。如果某个节点的IsOK值不为“正常”,则将它加入到可能故障列表,不再查询它的子节点的lsOK值。可能故障列表生成完毕后,将作为异常警报的内容发送给刚络应用管理人员,提醒他们维护管理。
3.2异常预警
网络应用综合检测系统持续不断地检测网络应用的运行状态,但网络应用管理人员不可能一直在旁查看检测结果,因此网络应用综合检测系统设计并实现了异常警报功能。当某个检测项目发现异常情况,网络应用综合检测系统会自动对该项目再进行一次检测,以确定网络应用确实出现了问题,而不是偶尔情况导致服务器不能及时响应。在确认网络应用出现异常情况后,网络应用综合检测系统将对异常信息进行分析处理,得出异常警报,并用电子邮件和手机短信等方式提醒管理人员进行维护。为了防止程序重复发送同一个异常警报,程序在发送警报前将检查是否己发送过同样的异常警报。
程序发送电子邮件的功能通过调用System.Net.Mail命名空间下的多个类来实现,而发送手机短信是通过第三方提供的Web Service来实现。
网络应用综合检测系统根据数据库Into的表Manager的纪录来寻找相应的管理人员,并将异常警报发送给他们。
4.结语
本文设计和实现了一个网络戍用综合检测系统,并成功地应用到上海大学房产地图应用项目中,实现了预期目标。网络应用综合检测系统的运行状况如图3所示:
图3 网络应用综合检测系统运行图
网络应用综合检测系统相比十其它同类型系统,主要有以下的突破:①将应用系统检测、数据库检测和WebService检测接合存一起:②在网络应用出现故障时进行分析,找出可能的网络应用故障原因,并发出异常警报,通过电子邮件和手机短信通知管理人员进行维护。
网络应用综合检测系统有着良好的扩展性,具有良好的应用前景。目前嘲络应用综合检测系统的功能还比较简单,要在大规模删络应用环境F应用,还有一些地方需要改进:
(1)扩大榆测内容,使检测范围不仅限于应用系统、数据库和Web Service:
(2)对检测结果进行图形化展示。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:网络应用综合检测系统的研究