拨测系统探针端的设计与实现*
2016-01-04
拨测系统探针端的设计与实现*
王东1,2, 李炜1,2, 沈奇威1,2
(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876; 2 东信北邮信息技术有限公司,北京 100191)
摘 要互联网拨测系统是一套分布式的网络性能监控系统,通过对用户的业务感知,来获取用户“真实体验”信息,为网络维护人员提供最直接最科学的维护依据,本文介绍的探针系统即是模拟用户请求以进行数据采集的系统[1]。
关键词用户体验; 监控系统; 数据采集
1 引言
随着网络经济飞速发展,网站已经成为企业实现经济效益的重要手段,因此保证企业网站健康、高速的运转,已成为企业首当其冲的重要课题。作为网站服务运营者,不可避免的会遇到网站服务无法访问、打开速度缓慢、服务异常等等的问题。网站即使能够提供丰富多样的服务内容,但是用户体验不佳的话,也会造成大量用户的流失,直接影响网站的 PV (页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标)和 UV(指访问某个站点或点击某条新闻的不同),以及网站的内容覆盖和传播。
互联网拨测系统是一套分布式的网络性能监控系统,通过对用户的业务感知,来获取用户“真实体验”信息,为网络维护人员提供最直接最科学的维护依据。
2 相关技术
为了提高系统的成熟度,多采用体系成熟、使用广泛、充分得到验证的技术和框架,主要有如下几个。
2.1 Java序列化
Java中,一切都是对象,对象在需要时被创建,如果不对对象进行回收,对象就一直存在于内存中;但是在程序终止时,内存中的对象都不会继续存在。在分布式环境中经常需要将对象从一个设备传递到另一设备,这就需要将内存中的对象信息保存之后发送到远端,Java对象的序列化机制解决了这个问题[2]。
2.2 MINA
MINA是一Apache的一个开源框架,是一个网络应用框架,使用MINA可以用于开发高性能的网络应用程序的传输模块。MINA给开发人员提供了一系列的通过Java NIO的异步API,屏蔽了处理底层I/O和线程并发的细节,开发人员只需关心系统的业务设计和开发。
MINA分为3个层次:I/O服务、I/O过滤器、I/O处理器。I/O服务用来执行实际的I/O操作,MINA提供了支持不同协议的I/O服务,开发人员也可以实现自己的I/O服务。I/O过滤器是完成Java对象和字节流的转换,因为系统中存储的是Java对象,而传输时要使用字节流。I/O过滤器的另一个作用是对数据进行处理,满足用户需求。I/O处理器用来执行具体的业务逻辑。
3 互联网拨测系统
互联网拨测系统是基于C/S的分布式网络监测系统。本系统由三部分组成:前端、中心服务器以及探针。
前端负责所有的用户交互过程以及各类数据呈现,是整个系统与各种类型的用户打交道的窗口。前端服务器主要由负责用户界面的Web服务器和负责客户端接口的API服务器构成。用户界面:以Web形式向用户提供监控分析平台的各种功能的使用界面,包括对平台的管理,提供数据的可视化展现。不同的用户角色对应不同的用户界面。API接口:提供开发的API接入服务,为各类客户端提供便捷、高效、一致、安全的接入方式。也为后续可能的第三方接入提供必要条件。
中心服务器是整个系统的核心,几乎所有的业务逻辑的控制和执行都是由它完成。中心服务器作为核心的3个模块分别是:任务管理、模型管理、资源管理,这3个模块负责中心服务器的三大核心功能。任务管理:对测试任务运行中的各个过程进行跟踪和管理。包括测试任务的分发、启动、监控、告警等等。模型管理:测试模型定义了测试过程中的各个细节,模型管理模块负责测试模型的定义、条件检测、以及模型的存储。资源管理:该模块负责管理整个系统的各类资源,包括各个探针和探针能够提供各项服务,以及其他可用资源。
探针作为客户端,通过模拟用户对目标服务器的访问,获取目标服务器的连接状态信息,并将信息发送到中心服务器;中心服务器根据用户的需求对探针收集到的原始数据进行分析和统计,从而实现对目标服务器的监测。中心服务器和探针的关系可以通过系统总体架构图得知,如图1所示。
如图1所示,监测任务的指令从前端发起,前端通过Thrift接口与中心服务器进行通信;中心服务器将接收到的指令通过MINA发送到探针。中心服务器有任务管理、用户管理、探针管理、告警、生成报表等功能,探针端负责具体监控任务的调度、执行,监测数据的获取等功能。
4 探针端的设计
探针采用模块化开发,各模块职责明确,相互独立,通过内部接口交互信息,各模块的改变不会影响其他模块的结构。该架构在解决当前业务需求和管理需求的前提下,充分考虑将来会出现的需求变化,为后序系统升级、扩展以及与其他应用系统的互通接口提供了快速响应和良好的扩展能力。
图1 系统总体架构图
探针端的主要工作包括:(1)连接服务器,接受服务器的命令,完成命令解析,并根据不同类型的命令执行相应的操作,例如启动监控任务、停止监控任务;(2)完成对监控任务列表的数据采集工作;(3)将监测到的结果数据发送回服务器。针对探针端的上述需求,其总体设计如图2所示。
其中通信模块是探针和服务器交互的接口。通信模块接收服务器的命令,并将命令发送到控制模块,控制模块解析命令。如果是启动任务,就重新创建一个监控任务,并将监控任务存储到任务队列中;如果是停止任务,就将该任务从任务队列里移除。当队列中的监控任务被调度后,就会调用数据收集模块对应子模块的API接口,完成一次数据收集动作,同时将该监控任务重新放入队列中(因为任务是每隔固定时间执行一次)。下面对各个模块进行详细介绍。
4.1 通信模块
通信模块是服务器和探针之间信息交换的接口,负责将服务器的命令发送到探针,并且把探针的监测结果数据发送回服务器。通信模块基于Java序列化,实现服务器和探针端全双工的传输数据。
系统中采用了通过MINA网络通信应用框架,实现了开放API的方式,将真正的网络通信与应用程序隔离开来,服务器和探针只需要关心要发送、接受的数据以及业务逻辑即可,服务器可以通过调用对方的API接口将命令发送给探针,探针也可以讲监测结果数据以同样的方式发送给服务器。
4.2 控制模块
控制模块又分为监听组件和操作组件。监听组件负责监听由服务端发送的命令,接收到服务端命令后,监听组件对命令解析并发送到操作组件,操作组件接受命令,对命令进行响应,完成启动、停止任务等操作。服务器向探针端发送的命令分为启动命令和停止命令两种,启动命令即给探针分配一个新的监控任务,停止命令即删除一个监控任务。控制模块同时也监视探针和服务器之间连接的状态。如果监听模块监测到连接状态异常,如连接断开,监听组件就会将异常信息发送到报告模块,报告模块向服务器发送探针的注册请求,服务器接收到请求后选择是否将连接恢复。控制模块就是探针端的中央处理器,它完成了对命令的接收、解析和操作,并且负责保证服务器和探针之间连接的稳定[3]。
4.3 任务存储与调度模块
任务存储与调度模块实现对监控任务的存储和调度。该模块把监控任务实例存储在一个优先级队列中,并在适当的时间调度监控任务。对任务的存储采用基于优先级堆的极大优先队列实现,每次从队列中取出的都是具有最高优先级的任务,往队列添加任务的时候也会根据优先级自动排序,系统中使用的优先级既是监控任务离下一次调度剩余的时间,剩余的时间越少优先级越高。对监控任务完成一次调度之后,将任务下次执行的时间重置为任务的监控频率[4],并且将监控任务放到任务队列中,以待下次调度,所以监控任务在停止之前会以用户指定的监控频率循环调度执行。
4.4 数据收集模块
数据收集模块是系统的核心模块,是实际进行信息获取的模块。该模块给任务调度模块提供接口,当有任务启动时,启动的监控任务会调用该模块的接口,模拟对目标服务器的访问,从而获取监测结果,并将结果数据发送到缓存模块[5]。该模块针对不同的监测类型有不同的子模块,每个子模块可以完成一种类型的监测。目前系统支持的有HTTP类型、TCP/UDP类型、SMTP/POP3类型、PING类型。
图2 探针端架构图
HTTP类型使用HTTP Client模拟HTTP访问,从而获取访问过程中的响应时间。TCP/UDP类型通过iperf网络测试工具获取最大TCP/UDP带宽性能,同时可以获取延时、抖动、分组丢失率等。对于SMTP/POP3类型监使用Java实现邮件发送和接收的功能,获取这两个过程的响应时间。PING类型使用Linux的fping命令获取延时和分组丢失率。
4.5 数据缓存模块
数据缓存模块实现是监测结果数据的缓存区。如果每完成一次数据收集就把收集到的数据发送到服务器,探针就会和服务器频繁的进行数据交换,但是由于每次发送的数据量很小,所以数据发送的效率整体不高。数据缓存模块对监测结果进行暂时存放,积累到一定数据量时才向服务器发送一次数据,发送完成之后清空缓存数据,以便下次使用;这样可以大大减少探针和服务器数据发送的次数,增加每次发送的数据量,从而提高数据发送的效率[5]。
4.6 报告模块
报告模块负责将探针端的信息通过通信模块发送到服务器。探针端发送到服务器的信息分为3种:(1)探针注册信息,注册信息既是探针端向服务器发送的连接请求,其中包括探针的状态信息,服务器会根据这些信息决定是否与该探针建立连接。(2)监测结果数据,报告模块会定时的从缓存模块读取数据,并将数据发送给通信模块,由通信模块将数据发送到中心服务器。(3)异常信息,当监测结果出现异常数据时,异常数据也是通过报告模块发送到服务器。
5 结束语
本文概述了拨测系统探针端的整体设计,系统基于MINA框架进行通信,模拟邮件发送的过程从而获取SMTP类型监控的相应时间,从而实现了数据收集的功能。
参考文献
[1]Xuesong Qiu, Likun Yu, Songqing Guo. An efficient network detection approach based on correlation relationship[C]. Advanced Intelligence and Awarenss Internet (AIAI 2010), 2010 International Conference on.
[2]Rao, N.S.V. , Comput. Sci. & Math. Div., Oak Ridge Nat. Lab., et al.On performance of individual, collective and network detection of propagative sources.Information Fusion (FUSION)[C]. 2012 15th International Conference on
[3]张玮. 基于协议分析的网络流量监测系统研究与开发[D]. 湖南:中南大学. 2008:20-36.
[4]高丰,杜德慧. 基于蜜网的网络监测系统的设计与实现[D].江苏:江南计算技术研究所.2011.9:42-56.
[5]张兴忠,乔敏. 提高网页浏览速度的探讨[J].电脑开发与应用,2012,25(1):55-57.
Design and implement of probe client in test system
WANG Dong1,2, LI Wei1,2, SHEN Qi-wei1,2
(1 State Key Lab of Networking and Switching Technology, Beijing Universi2ty of Posts and Telecommunications, Beijing 100876, China; 2 EBUPT Information Technology Co. Ltd, Beijing 100191, China)
AbstractInternet testing system is a distributed network performance monitoring system, through the perception of users to obtain the user's "real experience" information, to provide the most direct and scientifi c basis for the maintenance of the network maintenance personnel, probe system which is introduced in this paper is to simulate user's requests to gather data.
Keywordsuser experience; monitoring system; data collection
* 基金项目:国家973计划项目(编号:2013CB329102);国家自然科学基金资助项目(No. 61471064,61372120, 61271019, 61101119, 61121001);长江学者和创新团队发展计划资助(编号:IRT1049);教育部科学技术研究重点(重大)项目资助(编号:MCM20130310);北京高等学校青年英才计划项目(编号:YETP0473)。
收稿日期:2014-12-22
文章编号1008-5599(2015)01-0042-04
文献标识码A
中图分类号TN929.5