隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)應(yīng)用技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)的應(yīng)用越來(lái)越復(fù)雜,建立在網(wǎng)絡(luò)上的分布應(yīng)用系統(tǒng)越來(lái)越多,網(wǎng)絡(luò)應(yīng)用的復(fù)雜性和異構(gòu)性越來(lái)越高,管理也變得越來(lái)越困難。因此有必要對(duì)網(wǎng)絡(luò)應(yīng)用的運(yùn)行狀況進(jìn)行監(jiān)控,及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)應(yīng)用的異常情況,準(zhǔn)確判斷異常發(fā)生位置,然后采取相應(yīng)措施維護(hù),以保證網(wǎng)絡(luò)應(yīng)用的正常運(yùn)行。很多國(guó)家機(jī)關(guān)、企事業(yè)單位都建立了各種各樣的網(wǎng)絡(luò)應(yīng)用監(jiān)測(cè)系統(tǒng),用來(lái)監(jiān)控網(wǎng)絡(luò)應(yīng)用的運(yùn)行狀況。由于網(wǎng)絡(luò)應(yīng)用協(xié)議的規(guī)范化,網(wǎng)絡(luò)應(yīng)用監(jiān)控技術(shù)相對(duì)比較成熟,但針對(duì)網(wǎng)絡(luò)應(yīng)用層以上的異構(gòu)的、分布的、綜合性應(yīng)用系統(tǒng)運(yùn)行監(jiān)控技術(shù)相對(duì)比較薄弱。
例如,上海大學(xué)房產(chǎn)地圖應(yīng)用系統(tǒng)集成了由不同部門人員管理的多個(gè)子系統(tǒng),包括分布在小問校區(qū)的SAP/ECC系統(tǒng)小動(dòng)產(chǎn)管理模塊、SAP/EP網(wǎng)站系統(tǒng)、基于Flex開發(fā)的校園地圖系統(tǒng)、兩個(gè)關(guān)系數(shù)據(jù)庫(kù)以及多個(gè)獨(dú)立的業(yè)務(wù)應(yīng)用服務(wù)組件,運(yùn)行在多臺(tái)服務(wù)器和虛擬機(jī)上。其中任何一個(gè)分布的模塊或子系統(tǒng)故障就足整個(gè)系統(tǒng)的故障,如校園網(wǎng)、應(yīng)用服務(wù)器軟硬件、數(shù)據(jù)庫(kù)和Web Service的運(yùn)行有任何不穩(wěn)定,將使得Flash前臺(tái)展現(xiàn)系統(tǒng)不能正常工作,影響到用戶的使用。由于網(wǎng)絡(luò)應(yīng)用條件復(fù)雜,缺少應(yīng)用系統(tǒng)檢測(cè)工具,出現(xiàn)故障時(shí)往往難以迅速判斷問題的原因,一直以來(lái)給系統(tǒng)管理員造成很大維護(hù)壓力。校同網(wǎng)絡(luò)是房產(chǎn)地圖系統(tǒng)可靠運(yùn)行的前提,本文目標(biāo)是針對(duì)網(wǎng)絡(luò)應(yīng)用檢測(cè)難題,設(shè)計(jì)開放、簡(jiǎn)單、有效和使用方便的網(wǎng)絡(luò)應(yīng)用檢測(cè)工具。
1.檢測(cè)系統(tǒng)的設(shè)計(jì)
1.1需要解決的關(guān)鍵問題
網(wǎng)絡(luò)應(yīng)用檢測(cè)的目的是搜集網(wǎng)絡(luò)應(yīng)用運(yùn)行的各項(xiàng)信息,使管理人員能夠及時(shí)發(fā)現(xiàn)異常情況,分離、解決應(yīng)用系統(tǒng)故障,對(duì)網(wǎng)絡(luò)應(yīng)用進(jìn)行維護(hù)。目前大多數(shù)網(wǎng)絡(luò)檢測(cè)系統(tǒng)的檢測(cè)目標(biāo)是服務(wù)器、路由器和交換機(jī)等網(wǎng)絡(luò)設(shè)備,檢測(cè)內(nèi)容主要是:①網(wǎng)絡(luò)的數(shù)據(jù)流量測(cè)量;②網(wǎng)絡(luò)安全和病毒防護(hù)等,檢測(cè)主要集中在底層,檢測(cè)常用的方法有遠(yuǎn)程網(wǎng)絡(luò)應(yīng)用監(jiān)控(RMON)、XFIow和探針。目前大多數(shù)數(shù)據(jù)庫(kù)檢測(cè)系統(tǒng)的檢測(cè)目標(biāo)豐要是數(shù)據(jù)庫(kù)的運(yùn)行性能和日志,大多數(shù)Web Service監(jiān)測(cè)系統(tǒng)的檢測(cè)日標(biāo)主要足Web Service的平均反應(yīng)時(shí)間、服務(wù)使用次數(shù)等服務(wù)參數(shù)。
本文研究目標(biāo)是應(yīng)用系統(tǒng)的檢測(cè)。以上海大學(xué)房產(chǎn)地圖應(yīng)用系統(tǒng)為實(shí)例,設(shè)計(jì)~個(gè)能夠?qū)?yīng)用系統(tǒng)的各個(gè)子系統(tǒng)與獨(dú)市模塊運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控的軟件,自動(dòng)地對(duì)網(wǎng)絡(luò)應(yīng)用情況進(jìn)行全面檢測(cè),對(duì)檢測(cè)結(jié)果進(jìn)行初步的統(tǒng)計(jì)處理,并在網(wǎng)絡(luò)應(yīng)用出現(xiàn)較嚴(yán)霞問題時(shí)發(fā)出異常警報(bào),提醒管理人員進(jìn)行維護(hù)。為了讓網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)能夠有效幫助管理人員檢測(cè)監(jiān)控網(wǎng)絡(luò)應(yīng)用狀態(tài),本文對(duì)它提出了以下幾個(gè)具體設(shè)計(jì)指標(biāo):(1)準(zhǔn)確性網(wǎng)絡(luò)應(yīng)用檢測(cè)數(shù)據(jù)要準(zhǔn)確:(2)及時(shí)性網(wǎng)絡(luò)應(yīng)用檢測(cè)數(shù)據(jù)要及時(shí)獲得與發(fā)布;(3)自動(dòng)化自動(dòng)檢測(cè)網(wǎng)絡(luò)應(yīng)用運(yùn)行狀態(tài);(4)可擴(kuò)展性可以增加、修改和刪除檢測(cè)項(xiàng)目。
通過(guò)分析,本文認(rèn)為需解決的關(guān)鍵問題豐要是:
a.應(yīng)用系統(tǒng)檢測(cè)涉及許多本地進(jìn)程的遠(yuǎn)程診斷,因涉及安全問題不宜直接檢測(cè),如何對(duì)獨(dú)立應(yīng)用子系統(tǒng)進(jìn)行簡(jiǎn)單、有效檢測(cè)需尋找新方法;
b.從系統(tǒng)柔性考慮,需設(shè)計(jì)合理框架,適應(yīng)檢測(cè)功能范圍變化;
c.收集到的綜合性分布應(yīng)用系統(tǒng)原始狀態(tài)信號(hào)又多又亂,如何對(duì)收集的大量實(shí)時(shí)檢測(cè)數(shù)據(jù)進(jìn)行分析,需要設(shè)計(jì)新算法;
d.從系統(tǒng)可靠性考慮,系統(tǒng)管理員應(yīng)先于普通用戶獲取預(yù)警信息,如何及時(shí)發(fā)布預(yù)警信息需要尋找新渠道;
1.2 檢測(cè)系統(tǒng)設(shè)計(jì)構(gòu)思
首先,本文提出應(yīng)用系統(tǒng)測(cè)試的簡(jiǎn)化方法一一應(yīng)用服務(wù)組合測(cè)試法。本文假設(shè)一個(gè)分布式應(yīng)用系統(tǒng)如正常運(yùn)行,必要前提條件是計(jì)算機(jī)網(wǎng)絡(luò)運(yùn)行正常、安裝應(yīng)用軟件的操作系統(tǒng)運(yùn)行正常以及應(yīng)用軟件本身至少一個(gè)模塊運(yùn)行正常。應(yīng)用服務(wù)組合測(cè)試法使用一組應(yīng)用服務(wù)模塊檢測(cè)替代一個(gè)應(yīng)用系統(tǒng)本身的檢測(cè),應(yīng)用服務(wù)組合包括:計(jì)算機(jī)網(wǎng)絡(luò)槍測(cè)模塊、系統(tǒng)軟件檢測(cè)模塊、應(yīng)用軟件檢測(cè)模塊。從便于實(shí)施考慮,各監(jiān)測(cè)模塊都統(tǒng)一封裝為Web Service。
網(wǎng)絡(luò)應(yīng)用檢測(cè)系統(tǒng)跨越小同平臺(tái)使用不同工具開發(fā),有較高難度。從降低開發(fā)復(fù)雜度的角度,本文提出建立數(shù)據(jù)采集、數(shù)據(jù)分析、業(yè)務(wù)處理三層框架結(jié)構(gòu)。如圖1所示:
圖1 系統(tǒng)架構(gòu)框圖
數(shù)據(jù)采集層:由應(yīng)用系統(tǒng)連接狀態(tài)采集模塊、數(shù)據(jù)庫(kù)連接狀態(tài)采集模塊、Web Service連接狀態(tài)采集模塊等模塊組成。各應(yīng)朋服務(wù)模塊根據(jù)注冊(cè)數(shù)據(jù)庫(kù)lnfo中的配置信息,采集應(yīng)用系統(tǒng)服務(wù)器、數(shù)據(jù)庫(kù)和Web Service的連接狀態(tài),如能否連接,連接所需要的時(shí)間等,時(shí)間單位為毫秒。測(cè)試結(jié)果統(tǒng)一返回分析處理層處理;
分析處理層:由檢測(cè)紀(jì)錄持久化模塊、異常警報(bào)發(fā)送模塊、故障推斷模塊、采集數(shù)據(jù)分析模塊、注冊(cè)信息讀取模塊等模塊組成,負(fù)責(zé)將數(shù)據(jù)采集層獲取的網(wǎng)絡(luò)應(yīng)用狀態(tài)數(shù)據(jù)進(jìn)行分析處理,計(jì)算出每個(gè)檢測(cè)項(xiàng)日的響應(yīng)時(shí)間、平均響應(yīng)時(shí)間、連接成功次數(shù)、連接失敗次數(shù)、總連接次數(shù)、最后一次成功連接時(shí)間等統(tǒng)計(jì)信息,并對(duì)故障原兇進(jìn)行分析推理。分析結(jié)果交業(yè)務(wù)展現(xiàn)層處理。
業(yè)務(wù)展現(xiàn)層:由應(yīng)用系統(tǒng)連接狀態(tài)展現(xiàn)模塊、數(shù)據(jù)庫(kù)連接狀態(tài)展現(xiàn)模塊、Web Service連接狀態(tài)展現(xiàn)模塊、檢測(cè)紀(jì)錄持久化狀態(tài)展現(xiàn)模塊和異常警報(bào)發(fā)送狀態(tài)展現(xiàn)模塊等模塊組成。負(fù)責(zé)響應(yīng)用,操作,調(diào)用網(wǎng)絡(luò)應(yīng)用檢測(cè)方法,顯示數(shù)據(jù)分析處理結(jié)果,將檢測(cè)紀(jì)錄持久化到數(shù)據(jù)庫(kù)Info中,將網(wǎng)絡(luò)應(yīng)用異常警報(bào)通過(guò)電子郵件和手枕短信等方式發(fā)送給網(wǎng)絡(luò)應(yīng)用管理人員等。
注冊(cè)數(shù)據(jù)庫(kù)Info用來(lái)存儲(chǔ)軟件的配置信息,檢測(cè)記錄數(shù)據(jù)庫(kù)Detection Record用于存儲(chǔ)檢測(cè)記錄和異常警報(bào)發(fā)送紀(jì)錄等相關(guān)記錄信息。
2.檢測(cè)系統(tǒng)的實(shí)現(xiàn)
網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)使用C#進(jìn)行開發(fā),是一款Windows窗體應(yīng)用程序,在安裝了.NET Framework 2.0或更高版本的Windows主機(jī)上均可以運(yùn)行。被檢測(cè)的網(wǎng)絡(luò)應(yīng)用主要由業(yè)務(wù)心系統(tǒng)、關(guān)系數(shù)據(jù)庫(kù)和獨(dú)市業(yè)務(wù)模塊組成。應(yīng)用服務(wù)組合測(cè)試泫對(duì)每種類氆都采用規(guī)范的網(wǎng)絡(luò)測(cè)試、系統(tǒng)測(cè)試與應(yīng)用測(cè)試模塊完成組合測(cè)試目的。
2.1 應(yīng)用服務(wù)組合測(cè)試的實(shí)現(xiàn)
2.1.1 業(yè)務(wù)應(yīng)用系統(tǒng)運(yùn)行狀態(tài)榆測(cè)
網(wǎng)絡(luò)檢測(cè):目前TCP/IP協(xié)議是網(wǎng)絡(luò)操作系統(tǒng)的通用組成模塊,通過(guò)比較網(wǎng)關(guān)與應(yīng)用系統(tǒng)IP的聯(lián)通即檢測(cè)出企業(yè)網(wǎng)或校園網(wǎng)運(yùn)行狀態(tài):程序進(jìn)行TCP連接,來(lái)檢測(cè)心用系統(tǒng)所在服務(wù)器的運(yùn)行狀態(tài)。如果服務(wù)器能響應(yīng)TCP連接,則判定服務(wù)器運(yùn)行正常-否則判定服務(wù)器出現(xiàn)異常。要建立TCP連接,需耍知道該服務(wù)器的名稱和使用的端口,根據(jù)服務(wù)器名稱和端口新建TcpClient對(duì)象,如果新建TcpClient對(duì)象成功,說(shuō)明服務(wù)器運(yùn)行正常。
系統(tǒng)檢測(cè):同上,采用通用方法測(cè)試系統(tǒng)IP地址與工作端口即可驗(yàn)證操作系統(tǒng)工作狀況:系統(tǒng)粱構(gòu)框圖應(yīng)用檢測(cè):封裝應(yīng)用系統(tǒng)的一個(gè)功能模塊,進(jìn)行檢測(cè)即可間接驗(yàn)證該系統(tǒng)的運(yùn)行狀況。例如要測(cè)試SAP/ECC應(yīng)用系統(tǒng)是否被啟動(dòng),可以封裝其BO的一個(gè)BAPI或用FRC開發(fā)一個(gè)Web Service,檢測(cè)該模塊正常則系統(tǒng)已啟動(dòng),運(yùn)行正常。
2.1.2關(guān)系數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)檢測(cè)
網(wǎng)絡(luò)檢測(cè)與系統(tǒng)槍測(cè):同上;
應(yīng)用檢測(cè):程序通過(guò)建立與數(shù)據(jù)庫(kù)的連接,來(lái)槍測(cè)數(shù)據(jù)庫(kù)所在服務(wù)器的運(yùn)行狀態(tài)。如果數(shù)據(jù)庫(kù)連接建立成功,則判定數(shù)據(jù)庫(kù)運(yùn)行正常,否則判定數(shù)據(jù)庫(kù)出現(xiàn)異常。要建立數(shù)據(jù)庫(kù)連接,需要知道該數(shù)據(jù)庫(kù)的類型(SQL Server、Access、Oracle和MySQL等)和相應(yīng)的連接字符串。
對(duì)于不f司的數(shù)據(jù)庫(kù)類型,建立數(shù)據(jù)庫(kù)連接的方法并不一樣。IDbConnection是.NET Framework中數(shù)據(jù)庫(kù)連接類的公共接口,所有數(shù)據(jù)庫(kù)連接類均實(shí)現(xiàn)了IDbConnection。常用的幾種數(shù)據(jù)庫(kù)和它們對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接類如表1所示:
表1幾種常用數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)庫(kù)連接類
本文根據(jù)數(shù)據(jù)庫(kù)類型和連接字符串新建數(shù)據(jù)庫(kù)連接對(duì)象,賦予IDbConnection類型引用conn,然后調(diào)用corm的Open()方法來(lái)測(cè)試相應(yīng)的數(shù)據(jù)庫(kù)是臺(tái)運(yùn)行正常。
2.1.3 業(yè)務(wù)Web Service模塊運(yùn)行狀態(tài)檢測(cè)
網(wǎng)絡(luò)檢測(cè)與系統(tǒng)檢測(cè):同上;
應(yīng)用檢測(cè):程序通過(guò)遠(yuǎn)程調(diào)用Web Service中的某個(gè)方法,來(lái)檢測(cè)Web Service的運(yùn)行狀態(tài)。如果Web Service能夠正常返州結(jié)果,則判定Web Service運(yùn)行正常,否則判定Web Service出現(xiàn)異常。選取用來(lái)測(cè)試的方法因不同的WebService而異,基本的選擇原則是:(1)該方法只用于查詢數(shù)據(jù),即調(diào)用該方法小會(huì)改變系統(tǒng)的數(shù)據(jù);(2)該方法的功能應(yīng)盡叮能地簡(jiǎn)單,即返州數(shù)據(jù)量小,運(yùn)行時(shí)間短,給WebService所在服務(wù)器帶來(lái)的負(fù)載盡可能小。
.NET Framework調(diào)用Web Service通常的做法是“添加Web應(yīng)用”,讓Visual Studio環(huán)境自動(dòng)牛成服務(wù)代理,然后調(diào)用相應(yīng)的Web Service。這秤調(diào)用方法的缺點(diǎn)是程序和提供Web Service的URL、方法名、參數(shù)綁定在一起了,程序缺乏可擴(kuò)展性,因此本文需要一個(gè)在.NET Framework中動(dòng)態(tài)調(diào)用Web Service的方法。本文采用以F方法實(shí)現(xiàn)了.NETFramework動(dòng)態(tài)調(diào)用Web Service的方法191:(1)獲取WSDL:(2)生成客戶端代理類代碼;(3)設(shè)定編譯參數(shù):(4)編譯代理類;(5)生成代理實(shí)例,并調(diào)用方法。不同的Web Service的參數(shù)個(gè)數(shù)并不相同,本文將所有參數(shù)值拼接成一個(gè)字符串儲(chǔ)存在表WebServicelnfo的Args字段中,各個(gè)參數(shù)之間用“,”分隔符分開。程序讀取并解析Args字段,得到相應(yīng)的參數(shù)值,再測(cè)試Web Service。
2.2 數(shù)據(jù)結(jié)構(gòu)與模塊設(shè)計(jì)
2.2.1 檢測(cè)系統(tǒng)注冊(cè)數(shù)據(jù)結(jié)構(gòu)
本文用一個(gè)礎(chǔ)n數(shù)據(jù)庫(kù)Info儲(chǔ)存配置數(shù)據(jù),應(yīng)用系統(tǒng)服務(wù)器、數(shù)據(jù)庫(kù)和Web Service的配置數(shù)據(jù)分別放在表Serverlnfo、表DataBaselnfo和表WebServicelnfo中。
其中IsUsed表明是否檢測(cè)該項(xiàng)目,NodelD則用于網(wǎng)絡(luò)應(yīng)用故障分析,網(wǎng)絡(luò)應(yīng)用故障分析將在后面展開。程序初始化時(shí),先從以上三張表中讀取配置數(shù)據(jù),填充到用戶界面的相應(yīng)表格中。當(dāng)需要增加、修改或刪除檢測(cè)項(xiàng)目時(shí),管理人員只需要修改數(shù)據(jù)庫(kù)中的相應(yīng)紀(jì)錄。因此網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)可以輕易地變更檢測(cè)項(xiàng)目,具有良好的擴(kuò)展性。能夠很快地在新的環(huán)境下應(yīng)用。
2.2.2多線程技術(shù)在檢測(cè)系統(tǒng)的應(yīng)用
對(duì)應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)和Web Service的運(yùn)行狀態(tài)進(jìn)行檢測(cè),需要消耗不少的時(shí)間,特別是在服務(wù)器繁忙或出現(xiàn)異常情況時(shí),檢測(cè)時(shí)間會(huì)比較長(zhǎng)。如果對(duì)檢測(cè)項(xiàng)目進(jìn)行順序檢測(cè),將會(huì)使檢測(cè)時(shí)問變得漫長(zhǎng)和低效率。另外,如果程序執(zhí)行耗時(shí)較長(zhǎng)的任務(wù),會(huì)導(dǎo)致用戶界面失去響應(yīng),帶來(lái)很差的用戶體驗(yàn)。因此,需要采用多線程技術(shù)來(lái)提高檢測(cè)效率,提供良好的用戶體驗(yàn)。
類Info是檢測(cè)基類.它的Check()方法負(fù)責(zé)檢測(cè)各個(gè)檢測(cè)項(xiàng)目。Check()是個(gè)虛方法,在各個(gè)子類中被重寫。子類的CheckO方法新建一個(gè)BackgroundWorker對(duì)象,在BaekgroundWorker對(duì)象的DoWork事件中調(diào)用子類私有的檢測(cè)方法DoCheck0。并在BackgroundWorker對(duì)象的RunWorkerAsync方法中把檢測(cè)參數(shù)對(duì)象(CheckObj類型)傳入。DoChec“)方法將檢測(cè)結(jié)果(檢測(cè)結(jié)果時(shí)間End、連接是否正常lsSuccess等屬性)寫入到檢測(cè)參數(shù)對(duì)象。然后在BackgroundWorker對(duì)象的RunWorkerCompleted事件中,調(diào)用子類的檢測(cè)結(jié)果處理方法。檢測(cè)結(jié)果處理方法主要有Count()、PfintRecord()、WfiteReeord()、SendMail()和SendMMS0等。
每個(gè)檢測(cè)進(jìn)程除了把檢測(cè)數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù)寫入到表格中相應(yīng)的行以外,還需要共用一些公共資源,如在詳細(xì)信息選項(xiàng)乍中寫入檢測(cè)信息等,本文對(duì)相應(yīng)函數(shù)進(jìn)行同步。
3.檢測(cè)系統(tǒng)的異常分析與預(yù)警
3.1 故障分析樹
網(wǎng)絡(luò)應(yīng)用異常檢測(cè)只能得到剛絡(luò)應(yīng)用故障的表面信息,網(wǎng)絡(luò)應(yīng)用管理人員需要對(duì)這些異常信息進(jìn)行分析推理,才能得到網(wǎng)絡(luò)應(yīng)用故障的真正原因,本文通過(guò)建立嘲絡(luò)應(yīng)用故障分析樹,可以幫助網(wǎng)絡(luò)應(yīng)用管理人員進(jìn)行分析推理,如圖2所示:
圖2 故障分析樹示例
網(wǎng)絡(luò)應(yīng)用故障分析樹是一個(gè)樹形結(jié)構(gòu).它有以下特點(diǎn):
①有且只有一個(gè)根節(jié)點(diǎn);
、诔烁(jié)點(diǎn),每個(gè)節(jié)點(diǎn)有且只有一個(gè)父節(jié)點(diǎn):
③每個(gè)節(jié)點(diǎn)可以有任意多個(gè)子節(jié)點(diǎn);
④檢測(cè)項(xiàng)目節(jié)點(diǎn)都是葉節(jié)點(diǎn)(沒有子節(jié)點(diǎn)的節(jié)點(diǎn)),葉節(jié)點(diǎn)也都是檢測(cè)項(xiàng)目節(jié)點(diǎn);
、莞腹(jié)點(diǎn)正常是子節(jié)點(diǎn)正常的必要條件:
網(wǎng)絡(luò)應(yīng)用故障分析樹如圖3所示:
網(wǎng)絡(luò)應(yīng)用故障分析樹的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的表FaultAnalysis,其中ParentNodelD是該節(jié)點(diǎn)的父節(jié)點(diǎn)編號(hào)。NodeDepth表明該節(jié)點(diǎn)的深度,根節(jié)點(diǎn)的NodeDepth為0,子節(jié)點(diǎn)的NodeDepth等于父節(jié)點(diǎn)的NodeDepth加上1。lsOK字段表明該節(jié)點(diǎn)的狀態(tài),有三種值:①“正常”;②“不正常”:③“可能不正常”。
由網(wǎng)絡(luò)應(yīng)用故障分析樹的特點(diǎn),我們可以得到以下推理規(guī)則:
(1)所有葉節(jié)點(diǎn)的IsOK值只能是“正常”或“不正常”:因?yàn)樗鼈兊腎sOK值是直接從檢測(cè)信息得來(lái)的:
(2)如果某個(gè)枝節(jié)點(diǎn)有一個(gè)或多個(gè)子節(jié)點(diǎn)的lsOK值為“正常”,則它的lsOK值也為“正常”。
(3)如果某個(gè)枝節(jié)點(diǎn)的所有于節(jié)點(diǎn)的IsOK值都不是“正常”,則該節(jié)點(diǎn)可能正常也可能不正常,即它的lsOK值應(yīng)該為“可能不正常”。
根據(jù)以上推理規(guī)則,可以得到相應(yīng)的故障分析算法:
(1)獲取所有節(jié)點(diǎn)NodeDepth的最大值;
(2)根據(jù)NodeDepth逐層推斷各個(gè)節(jié)點(diǎn)的IsOK值,直到根節(jié)點(diǎn)。
表Serverlnfo、DataBaselnfo和表WebServiceInfo中都有NodelD字段。這個(gè)字段參照表FaultAnalysis中的NodelD主鍵,故障分析樹可根據(jù)NodelD找到相應(yīng)葉節(jié)點(diǎn)的lsOK值。
故障分析完畢后,下一步是生成可能故障列表,生成可能故障列表的故障推斷算法。
從根節(jié)點(diǎn)開始,根據(jù)NodeDepth逐層往下尋找lsOK狀態(tài)值不為“正常”的節(jié)點(diǎn)。如果某個(gè)節(jié)點(diǎn)的IsOK值為“正常”。則往下尋找它的IsOK值不為“正常”的子節(jié)點(diǎn)。直到葉節(jié)點(diǎn)為止。如果某個(gè)節(jié)點(diǎn)的IsOK值不為“正常”,則將它加入到可能故障列表,不再查詢它的子節(jié)點(diǎn)的lsOK值。可能故障列表生成完畢后,將作為異常警報(bào)的內(nèi)容發(fā)送給剛絡(luò)應(yīng)用管理人員,提醒他們維護(hù)管理。
3.2異常預(yù)警
網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)持續(xù)不斷地檢測(cè)網(wǎng)絡(luò)應(yīng)用的運(yùn)行狀態(tài),但網(wǎng)絡(luò)應(yīng)用管理人員不可能一直在旁查看檢測(cè)結(jié)果,因此網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)設(shè)計(jì)并實(shí)現(xiàn)了異常警報(bào)功能。當(dāng)某個(gè)檢測(cè)項(xiàng)目發(fā)現(xiàn)異常情況,網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)會(huì)自動(dòng)對(duì)該項(xiàng)目再進(jìn)行一次檢測(cè),以確定網(wǎng)絡(luò)應(yīng)用確實(shí)出現(xiàn)了問題,而不是偶爾情況導(dǎo)致服務(wù)器不能及時(shí)響應(yīng)。在確認(rèn)網(wǎng)絡(luò)應(yīng)用出現(xiàn)異常情況后,網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)將對(duì)異常信息進(jìn)行分析處理,得出異常警報(bào),并用電子郵件和手機(jī)短信等方式提醒管理人員進(jìn)行維護(hù)。為了防止程序重復(fù)發(fā)送同一個(gè)異常警報(bào),程序在發(fā)送警報(bào)前將檢查是否己發(fā)送過(guò)同樣的異常警報(bào)。
程序發(fā)送電子郵件的功能通過(guò)調(diào)用System.Net.Mail命名空間下的多個(gè)類來(lái)實(shí)現(xiàn),而發(fā)送手機(jī)短信是通過(guò)第三方提供的Web Service來(lái)實(shí)現(xiàn)。
網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)根據(jù)數(shù)據(jù)庫(kù)Into的表Manager的紀(jì)錄來(lái)尋找相應(yīng)的管理人員,并將異常警報(bào)發(fā)送給他們。
4.結(jié)語(yǔ)
本文設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)戍用綜合檢測(cè)系統(tǒng),并成功地應(yīng)用到上海大學(xué)房產(chǎn)地圖應(yīng)用項(xiàng)目中,實(shí)現(xiàn)了預(yù)期目標(biāo)。網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)的運(yùn)行狀況如圖3所示:
圖3 網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)運(yùn)行圖
網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)相比十其它同類型系統(tǒng),主要有以下的突破:①將應(yīng)用系統(tǒng)檢測(cè)、數(shù)據(jù)庫(kù)檢測(cè)和WebService檢測(cè)接合存一起:②在網(wǎng)絡(luò)應(yīng)用出現(xiàn)故障時(shí)進(jìn)行分析,找出可能的網(wǎng)絡(luò)應(yīng)用故障原因,并發(fā)出異常警報(bào),通過(guò)電子郵件和手機(jī)短信通知管理人員進(jìn)行維護(hù)。
網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)有著良好的擴(kuò)展性,具有良好的應(yīng)用前景。目前嘲絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)的功能還比較簡(jiǎn)單,要在大規(guī)模刪絡(luò)應(yīng)用環(huán)境F應(yīng)用,還有一些地方需要改進(jìn):
(1)擴(kuò)大榆測(cè)內(nèi)容,使檢測(cè)范圍不僅限于應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)和Web Service:
(2)對(duì)檢測(cè)結(jié)果進(jìn)行圖形化展示。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.lukmueng.com/
本文標(biāo)題:網(wǎng)絡(luò)應(yīng)用綜合檢測(cè)系統(tǒng)的研究
本文網(wǎng)址:http://www.lukmueng.com/html/support/11121511357.html