隨著計算機技術和網絡應用技術的飛速發展,網絡的應用越來越復雜,建立在網絡上的分布應用系統越來越多,網絡應用的復雜性和異構性越來越高,管理也變得越來越困難。因此有必要對網絡應用的運行狀況進行監控,及時發現網絡應用的異常情況,準確判斷異常發生位置,然后采取相應措施維護,以保證網絡應用的正常運行。很多國家機關、企事業單位都建立了各種各樣的網絡應用監測系統,用來監控網絡應用的運行狀況。由于網絡應用協議的規范化,網絡應用監控技術相對比較成熟,但針對網絡應用層以上的異構的、分布的、綜合性應用系統運行監控技術相對比較薄弱。
例如,上海大學房產地圖應用系統集成了由不同部門人員管理的多個子系統,包括分布在小問校區的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://m.vmgcyvh.cn/
本文標題:網絡應用綜合檢測系統的研究