?
撥測系統探針端的設計與實現*
王東1,2, 李煒1,2, 沈奇威1,2
(1 北京郵電大學網絡與交換技術國家重點實驗室,北京 100876; 2 東信北郵信息技術有限公司,北京 100191)
摘 要互聯網撥測系統是一套分布式的網絡性能監控系統,通過對用戶的業務感知,來獲取用戶“真實體驗”信息,為網絡維護人員提供最直接最科學的維護依據,本文介紹的探針系統即是模擬用戶請求以進行數據采集的系統[1]。
關鍵詞用戶體驗; 監控系統; 數據采集
隨著網絡經濟飛速發展,網站已經成為企業實現經濟效益的重要手段,因此保證企業網站健康、高速的運轉,已成為企業首當其沖的重要課題。作為網站服務運營者,不可避免的會遇到網站服務無法訪問、打開速度緩慢、服務異常等等的問題。網站即使能夠提供豐富多樣的服務內容,但是用戶體驗不佳的話,也會造成大量用戶的流失,直接影響網站的 PV (頁面瀏覽量,通常是衡量一個網絡新聞頻道或網站甚至一條網絡新聞的主要指標)和 UV(指訪問某個站點或點擊某條新聞的不同),以及網站的內容覆蓋和傳播。
互聯網撥測系統是一套分布式的網絡性能監控系統,通過對用戶的業務感知,來獲取用戶“真實體驗”信息,為網絡維護人員提供最直接最科學的維護依據。
為了提高系統的成熟度,多采用體系成熟、使用廣泛、充分得到驗證的技術和框架,主要有如下幾個。
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處理器用來執行具體的業務邏輯。
互聯網撥測系統是基于C/S的分布式網絡監測系統。本系統由三部分組成:前端、中心服務器以及探針。
前端負責所有的用戶交互過程以及各類數據呈現,是整個系統與各種類型的用戶打交道的窗口。前端服務器主要由負責用戶界面的Web服務器和負責客戶端接口的API服務器構成。用戶界面:以Web形式向用戶提供監控分析平臺的各種功能的使用界面,包括對平臺的管理,提供數據的可視化展現。不同的用戶角色對應不同的用戶界面。API接口:提供開發的API接入服務,為各類客戶端提供便捷、高效、一致、安全的接入方式。也為后續可能的第三方接入提供必要條件。
中心服務器是整個系統的核心,幾乎所有的業務邏輯的控制和執行都是由它完成。中心服務器作為核心的3個模塊分別是:任務管理、模型管理、資源管理,這3個模塊負責中心服務器的三大核心功能。任務管理:對測試任務運行中的各個過程進行跟蹤和管理。包括測試任務的分發、啟動、監控、告警等等。模型管理:測試模型定義了測試過程中的各個細節,模型管理模塊負責測試模型的定義、條件檢測、以及模型的存儲。資源管理:該模塊負責管理整個系統的各類資源,包括各個探針和探針能夠提供各項服務,以及其他可用資源。
探針作為客戶端,通過模擬用戶對目標服務器的訪問,獲取目標服務器的連接狀態信息,并將信息發送到中心服務器;中心服務器根據用戶的需求對探針收集到的原始數據進行分析和統計,從而實現對目標服務器的監測。中心服務器和探針的關系可以通過系統總體架構圖得知,如圖1所示。
如圖1所示,監測任務的指令從前端發起,前端通過Thrift接口與中心服務器進行通信;中心服務器將接收到的指令通過MINA發送到探針。中心服務器有任務管理、用戶管理、探針管理、告警、生成報表等功能,探針端負責具體監控任務的調度、執行,監測數據的獲取等功能。
探針采用模塊化開發,各模塊職責明確,相互獨立,通過內部接口交互信息,各模塊的改變不會影響其他模塊的結構。該架構在解決當前業務需求和管理需求的前提下,充分考慮將來會出現的需求變化,為后序系統升級、擴展以及與其他應用系統的互通接口提供了快速響應和良好的擴展能力。

圖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)異常信息,當監測結果出現異常數據時,異常數據也是通過報告模塊發送到服務器。
本文概述了撥測系統探針端的整體設計,系統基于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