1 引言
当前,对各信息系统的运行状况未做到全方位实时监控,系统是否正常运转很多时候只能依靠管理人员人工查看或用户报修,缺乏有效手段监测故障,并导致系统发生故障后无法及时察觉,故障排除周期较长,用户对系统运维的满意度较低。由此可见,监控和预警在信息系统的日常运营中是非常重要的。
常见的网络监控软件(如Zabbix、Nagios、Cacti等)大多是通过SNMP获取服务器的资源信息来判断服务器是否工作正常,它们都是侵入式的,需要在服务器上安装客户端,这对于数量众多的已处于生产状态的信息系统而言不具有可操作性,而且网络监控软件也无法检测某个具体应用软件是否正常(如Web服务器是否正常)。常见的网站监测系统(如HostTracker、Favou、Hyperspin、Site24×7等)功能单一,只能监控网站,对C/S系统、应用服务器、数据库服务器,甚至服务器硬件都无能为力。所以,需要设计并实现一个能对企业内部网络上的信息系统进行实时监控的故障监控平台。
2 故障监控的整体流程
故障监控系统的主要功能是24小时不间断的监视指定的信息系统,当信息系统出现服务异常的情况时,系统能自动收集异常信息和相关的软硬件信息,并通过电子邮件、短信等方式,第一时间将故障情况报送相关负责人,促使最快速度进行处理,最大限度地减少损失。其整体工作流程如图1所示。
软心跳技术是监控应用服务是否正常的普遍做法,软心跳是指用周期性的网络访问来探测应用系统的可用性。其探测的目标通常包括网站网页、应用服务器、数据库服务器、服务器网络硬件等。利用心跳监测技术,可将监控粒度达到应用系统内部的功能项,不再局限于操作系统级别的监控。这种细粒度的运行监控,有利于及时掌握系统的可用性,对发现的故障及时处理,缩短响应周期,提高运维服务水平。
3 监控系统的设计与实现
故障监控系统依托Java EE平台实现,使用Spring中间件和Oracle数据库,主要由以下功能模块组成:用户管理、监控配置、实时监控、告警、数据存储、文件日志,如图2所示。其中,监控业务和数据存储是整个系统的核心功能。
3.1 监控业务
3.1.1 Web网页的监控
基于Web的信息系统在近年的信息化建设中使用的最为广泛。对Web应用系统的监控重点主要是可用性和稳定性,其中响应速度是影响用户体验的重要指标,系统的响应速度表现在用户打开网页或操作系统时的快慢程度。用户最满意的响应速度是在2秒以下;能够忍受的最长等待时间大约是8秒;如果网页反应速度在8秒以上,很可能大部分访问者都会放弃使用。
对Web应用系统的监控需要向网站网页发起访问请求,并在规定的时间内,截获HTTP状态码,根据被监控网站返回的状态码来判断网站的状态,当返回值为200时,判断网站正常,没有返回值、返回值不是200、超过设置的响应阈值等都判断网站异常。HTTP状态码是用以表示HTTP服务器响应状态的3位数字代码,它由RFC 2616规范定义,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。一些常见的状态码为:200服务器成功返回网页;400错误请求;404请求的网页不存在;503服务不可用。
通过网页监控技术不仅能够监测Web应用系统的可用性,还能初步判断系统的性能。对于重要应用,当响应很慢时,也需进行告警。
3.1.2应用服务器的监控
常见的应用服务器包括:Apache、Tomcat、Nginx、Jetty、Lighttpd、JBoss、WebSphere、WebLogic、ZendServer、IIS等,它是信息系统中的核心组件,对它的监控至关重要。监控应用服务器的手段主要有两点。一是监控它的服务端口,例如Apache的80端口、Tomcat的8080端口、JBoss的8080端口(http协议)和8443端口(https协议)、WebSphere的9080端口、WebLogic的7001端口、ZendServer的10081端口。第二个方法是访问一个已设定的动态网页,在返回的结果中查找一个或多个预先知道的关键字,若查找不到,则可判断应用服务器有异常。
3.1.3数据库服务器的监控
常见的数据库服务器包括Oracle、MySQL、SQL Server以及内存数据库(如SQLite)和NoSQL数据库(如Casssandra、MongoDB)等,它们是组成信息系统的重要部分。监控数据库服务器的方法主要有两个。在知晓数据库连接信息的情况下,可以通过编程方式(如JDBC)向数据库服务器发出简单的select查询,如查询失败,或在规定的时间内不能完成,那么数据库服务器发生了系统故障,或数据库中发生了事务死锁,总之数据库层工作不正常。第二个方法是访问一个操作数据库的动态网页,如访问成功,说明数据库服务正常。
3.1.4服务器网络状态的监控
ping是测试网络联接状况以及信息包发送和接收状况非常有用的工具,是网络测试最常用的命令。ping命令向目标地址发送一个回送请求数据包,要求目标收到请求后给予答复,从而判断本机是否与目标地址联通,并得到响应时间。
当软件层应用出现异常时,通过周期性的ping操作,来探测服务器、路由器及其它网络设备的硬件层健康性,能及时发现节点故障和网络中断问题。ping命令的监测指标主要是成功率和平均响应时间。
3.1.5 C/S系统的监控
遗留的信息系统中,还有一些是基于C/S架构的。对于这样的应用系统,可以定期的访问逻辑层服务器(如C++的中间件服务器MYCP)和数据库服务器,完成心跳监测。还有一种方法是使用wget命令获取Server端的日志文件,通过log内容的变化频度,来判断应用系统的存活状态。
对于已经上线的生产系统,以上几个方法能够满足一般的监控要求。但定时轮询的探测技术都要求监控对象暴露一些信息给故障监控系统(最基本的就是URL或IP地址)。为此,故障监控系统在实现时,使用WebService方式预留了API接口,对于后期开发的信息系统,可以调用API接口主动发送心跳信号给监控系统,从而避免监控对象的信息泄露。
3.2 数据存储
监控对象的配置信息、监控过程中的故障和告警信息,以及故障监控系统的管理信息都会被记录到关系表中,实时监控中的重要节点信息还会被记录到日志文件
中。如表1所示,其中,监控对象与告警处理人是n:n的关系,监控对象与故障记录是1:n的关系,故障记录与告警关联是n:n的关系。
4 应用成效
(1)可用性方面监控准确。已经开始对内网中多个信息系统进行监控管理,给各信息系统的管理人员带来很大的便利,一改以往需要人工检查的监控方式,减少了管理员的工作强度,使用至今,尚未发生误报情况,能准确、及时地发现信息系统运行时发生的问题。
(2)基本的性能监控起到预警效果。监控系统使管理员能主动预防问题的发生。例如在7月下旬,某刚上线的应用系统代码bug导致数据库异常(查询超时),接到报警后,管理员及时处理,防止了一个由数据库故障引发信息系统大范围无法访问的问题发生。
(3)监控系统对硬件服务器要求低。使用普通PC(Intel i5 3.2GHz CPU、4GB RAM、1TB HD)即可较好地完成实时监控功能,CPU平均使用率不超过45%(轮询周期设置为5min)。
5 结束语
故障监控系统为信息化建设的高效、稳定运行提供了有力保障,但监控对象还较为单一,除了对软件系统进行监控外,还需要对主机硬件(CPU、内存、外设磁盘)和交换设备进行监控,这是进一步研究的重点,需要在日后工作中不断完善。
参考文献
[1] 刘东君. 基于Nagios的综合监视系统设计与实现[J]. 网络安全技术与应用, 2013 (8): 18-20.
[2] 王忠鹏. 基于Nagios的交换机监控系统设计与实现[J]. 信息网络安全, 2013 (5): 60-63.
[3] 李莉, 罗汉杰. 基于Linux的网络监控工具Cacti研究和实现[J]. 信息安全与通信保密, 2013 (8): 45-47.
[4] 朱兰芳. 刍议图书馆网站监测方案[J]. 中国新技术新产品, 2011 (8): 34-36.
[5] 郑林江. 基于服务器流量的网站监控系统研究[J]. 信息安全与技术, 2013, 4(4): 76-77.
基金项目:
江苏省电力公司科技项目(J2014057)、江苏省高等学校软件服务外包类专业嵌入式人才培养项目(苏教高函[2014]14号)、江苏省卓越工程师(软件类)计划试点专业(苏教高函[2012]17号)。
作者简介:
高莉莎(1982-),女,硕士,南京供电公司高级工程师;主要研究方向和关注领域:计算机应用技术。
杨少雄(1973-),男,三江学院,讲师;主要研究方向和关注领域:数据库应用。
刘正涛(1975-),男,副教授,博士研究生;主要研究方向和关注领域:Web数据空间、Web数据集成。