肖招娣
(廣東電網(wǎng)有限責任公司 佛山供電局, 佛山 528000)
隨著企業(yè)信息化程度的增加,信息系統(tǒng)越來越多,網(wǎng)絡(luò)架構(gòu)越來越復雜,系統(tǒng)運維人員壓力越來越大。原有的集中監(jiān)控系統(tǒng)基于靜態(tài)環(huán)境的測評腳本是基于非生產(chǎn)環(huán)境的,與生產(chǎn)環(huán)境存在先天差異,無法真實反映生產(chǎn)環(huán)境下的用戶體驗,無法滿足系統(tǒng)運維需求,亟需實現(xiàn)真實環(huán)境下對各系統(tǒng)及網(wǎng)絡(luò)環(huán)境的監(jiān)控。
對用戶而言,無論是計算機軟硬件環(huán)境問題、網(wǎng)絡(luò)問題,還是信息系統(tǒng)自身的問題,只要發(fā)起的請求在超過可承受的等待時間后才響應(yīng),都會籠統(tǒng)地反映“系統(tǒng)很慢”。僅依靠用戶的體驗,系統(tǒng)管理員很難迅速定位真正的原因所在。
通過實施本項目,用真實環(huán)境下用戶體驗實現(xiàn)對各系統(tǒng)和網(wǎng)絡(luò)環(huán)境的監(jiān)控來取代靜態(tài)評測。用戶可以在自己的計算機上自主運行應(yīng)用系統(tǒng)自適應(yīng)仿真程序和網(wǎng)絡(luò)環(huán)境測試程序,集中監(jiān)控平臺可以通過調(diào)用各監(jiān)測點的仿真測試程序和網(wǎng)絡(luò)狀態(tài)評測程序,掌握各系統(tǒng)運行情況及網(wǎng)絡(luò)狀態(tài)。旨在及時發(fā)現(xiàn)問題、迅速定位問題,以便第一時間對癥下藥解決問題,減輕系統(tǒng)運維人員的壓力,提高信息系統(tǒng)用戶滿意度。
同時,利用知識管理庫存放各運維領(lǐng)域?qū)<蚁闰炛R,包括常見問題的原因及處理辦法,再利用專家系統(tǒng),開發(fā)智能運維功能指導故障的定位與問題的處理,提高運維的效率和準確性。
系統(tǒng)架構(gòu),如圖1所示。
Selenium及Watij都是可以用于網(wǎng)頁自動化測試的開源工具,均為直接在瀏覽器運行腳本。作為開源軟件自動化測試框架,使用它們開發(fā)的軟件自動化測試腳本,相對使用商用軟件自動化測試工具錄用的腳本,自適應(yīng)性更強,更接近真實用戶的操作。使用Win32的消息鉤子錄制的腳本在交互性和自適應(yīng)性方面更是無法與基于Selenium和Watij編寫的腳本比擬,且基于Win32消息鉤子的開源軟件測試框架基本上不支持Web程序的測試,例如White:基于消息鉤子錄制的腳本更適合用于C/S架構(gòu)的軟件的測試。
圖1 系統(tǒng)架構(gòu)圖
由于本文研究的仿真監(jiān)控及智能運維的信息系統(tǒng)均為B/S架構(gòu)的,故選擇了Selenium及Watij。
為了模擬用戶的真實操作,系統(tǒng)以軟件自動化測試開源框架為基礎(chǔ)。使用軟件自動化測試框架編寫仿真測試程序,相對于使用軟件自動化測試工具錄制測試腳本,對測試對象具有更好的適應(yīng)性,與被測試系統(tǒng)的互動可以完全模擬人的操作,幾乎接近使用者的真實操作。如此方式獲取的是原始數(shù)據(jù),更具備客觀性、真實性和準確性。針對多種開源的軟件自動化測試框架比對,選擇了Selenium和Watij這兩種開源框架。根據(jù)信息系統(tǒng)的特點,最終確定個別信息系統(tǒng)使用Selenium,其余信息系統(tǒng)使用Watij。相對于Selenium,Watij編寫的代碼更為清晰、靈活、易于理解、更快的執(zhí)行速度,提供了截圖功能,對上傳、下載、彈窗窗口等功能的支持更好。但是,Watij目前只支持IE瀏覽器,而Selenium支持多種瀏覽器,這是Selenium相對于Watij的優(yōu)勢,也是個別應(yīng)用需要選擇Selenium進行開發(fā)的原因。
同時,引入的重要技術(shù)還包括知識庫管理系統(tǒng)及專家系統(tǒng),通過人工智能技術(shù)實現(xiàn)智能運維功能。
在軟件的開發(fā)架構(gòu)方面,以Java的MVC模型為依托,實現(xiàn)整個監(jiān)控系統(tǒng)的高內(nèi)聚、低耦合,增強系統(tǒng)的擴展性、伸縮性、易維護性。
在語言方面,融合了Java語言、JavaScripts、VB以及批處理。在計算機技術(shù)方面,整合了軟件自動化測試技術(shù)、Java的企業(yè)級應(yīng)用技術(shù)、xObject插件技術(shù)及Windows操作系統(tǒng)的底層技術(shù)。
該系統(tǒng)的功能包括:網(wǎng)絡(luò)狀態(tài)評測模型的研究,自適應(yīng)仿真測試程序和網(wǎng)絡(luò)狀態(tài)評測程序的研發(fā),集中監(jiān)控平臺定時或不定時調(diào)用各地監(jiān)測點的測試程序和評測程序,測試報告內(nèi)容的采集、處理與告警信息的發(fā)布,運維知識的管理,專家診斷功能的研發(fā)。
通過運行仿真測試程序,捕獲故障:通過網(wǎng)絡(luò)狀態(tài)評估模型,判定網(wǎng)絡(luò)是否存在故障;在網(wǎng)絡(luò)正常的情況下,運行被監(jiān)測信息系統(tǒng)的自適應(yīng)仿真測試程序,根據(jù)日常運維過程中積累的經(jīng)驗所設(shè)置的閾值進行判斷,當某個操作超過閾值時,判定為故障,并將相關(guān)的信息傳遞給后續(xù)程序處理。
知識庫主要用于存放各領(lǐng)域運維專家的先驗知識,包括計算機網(wǎng)絡(luò)專家的經(jīng)驗,相關(guān)信息系統(tǒng)的資深運維人員的經(jīng)驗??紤]到知識庫所固化的規(guī)則直接影響到后續(xù)的智能運維的質(zhì)量,該系統(tǒng)的知識庫通過人工錄入、導入產(chǎn)生,并提供修改、停用、刪除的功能。專家系統(tǒng)基于知識庫的規(guī)則,提供智能診斷功能,將可能產(chǎn)生故障故障的原因及建議的處置方式發(fā)送給相關(guān)運維人員。
技術(shù)架構(gòu),如圖2所示。
圖2 仿真測試程序技術(shù)架構(gòu)圖
1.4.1 仿真測試功能
1、實現(xiàn)仿真測試功能:模擬用戶的操作。在該仿真測試監(jiān)控系統(tǒng)的開發(fā)過程中,用到如下關(guān)鍵技術(shù):
1) 用開源框架實現(xiàn)IE標準控件的控制,模擬用戶對網(wǎng)頁的真實操作和交互。使用合適的開源測試框架實現(xiàn)對不同的信息系統(tǒng)關(guān)鍵功能的監(jiān)控,該系統(tǒng)主要用到了Selenium及Watij這兩個開源軟件測試框架;
2) 熟悉HTML基本語法,根據(jù) Web 頁面的源代碼來確定對多種常見 Web對象的識別、操作和自動驗證,必要時候還可以使用正則表達式;
3) 運用操作系統(tǒng)知識,將具體的監(jiān)控業(yè)務(wù)處理邏輯文件做成批處理文件;
4) 集中監(jiān)控平臺定時調(diào)用各監(jiān)控結(jié)點客戶端仿真程序。
2、仿真測試程序的運行:在客戶端瀏覽器觸發(fā)仿真測試時,可以選擇在仿真測試服務(wù)器或者在當前客戶機本地運行自動化測試程序。前者通過運行ActiveX插件的形式,實現(xiàn)對服務(wù)器本地存放的批處理文件的調(diào)用;后者使用Java的Servlet技術(shù),在本機運行測試程序。
同時,服務(wù)應(yīng)用程序也會根據(jù)配置的頻率運行仿真測試服務(wù)器本地存放的仿真測試批處理文件,該調(diào)用過程使用VB實現(xiàn)。
3、對測試結(jié)果的管理:包括存儲成為不同的文件并上傳到FTP和存儲到數(shù)據(jù)庫中,方便對結(jié)果的處理。存儲到FTP中的主要用于最近一次運行結(jié)果的查看。
建立仿真測試結(jié)果報告數(shù)據(jù)庫,用于記錄歷次運行仿真測試程序得到的反映系統(tǒng)運行狀況的客觀數(shù)據(jù),實現(xiàn)測試結(jié)果的完整記錄。將所有的測試結(jié)果均存放在MySQL數(shù)據(jù)庫中,方便查詢。也為后續(xù)信息系統(tǒng)運維工作領(lǐng)域的大數(shù)據(jù)分析和使用推薦系統(tǒng)進行智能診斷提供數(shù)據(jù)基礎(chǔ)。
4、短信告警:對于影響力比較大的系統(tǒng),除了實現(xiàn)定時監(jiān)測外,還要對監(jiān)測結(jié)果進行進一步處理。設(shè)定一個閾值,當測試的響應(yīng)時間超過設(shè)定的閾值時,通過與公司短信平臺的接口,實現(xiàn)短信的告警功能,以便在第一時間掌握系統(tǒng)的問題,將影響降至最低。
5、查看最近一次的測試報告:比較緊急的情況下,可能需要查看最近一次的測試報告,而不是運行一次測試程序,該功能通過Java的Servlet技術(shù)實現(xiàn)。
1.4.2 知識庫功能
在本系統(tǒng)中,知識庫是專家系統(tǒng)功能的基礎(chǔ),用于存放專家系統(tǒng)設(shè)計所應(yīng)用的規(guī)則集合,包含規(guī)則所聯(lián)系的事實及數(shù)據(jù),它們的全體構(gòu)成知識庫。該系統(tǒng)使用開源的知識庫管理系統(tǒng)Wiki。目前該知識庫主要存放了服務(wù)器、數(shù)據(jù)庫、存儲、網(wǎng)絡(luò)、防火墻、常見主營業(yè)務(wù)系統(tǒng)運維的先驗知識。同時,該知識庫提供了基本的規(guī)則錄入、修改、刪除和查詢等功能,為知識的管理與更新提供功能。
1.4.3 智能運維功能
專家系統(tǒng)是一個智能計算機程序系統(tǒng),其內(nèi)部含有大量的某個領(lǐng)域?qū)<业慕?jīng)驗知識,能夠利用人類專家的知識和解決問題的方法來處理該領(lǐng)域問題。它運用人工智能技術(shù)和計算機技術(shù),根據(jù)知識庫中管理的專家先驗知識,進行推理和判斷,模擬人類專家的決策過程。
該系統(tǒng)的智能運維功能,基于專家系統(tǒng)實現(xiàn),其基礎(chǔ)為知識庫功能模塊所固化的專家先驗知識。當故障發(fā)生的時候,利用知識庫和專家系統(tǒng)的功能模擬專家決策的過程,迅速定位問題并提供解決方案建議。在監(jiān)測到故障發(fā)生時,在發(fā)出告警的同時,將當前可能造成故障的原因及推薦的解決方法告知故障處理人員,供其參考使用。同時,在處理的時候,可以不斷的對現(xiàn)有的知識庫規(guī)則進行滾動修編。
我局先后在門戶系統(tǒng)、營銷系統(tǒng)及計量自動化系統(tǒng)等關(guān)鍵系統(tǒng)的關(guān)鍵操作進行了仿真監(jiān)控程序的開發(fā),運行在相關(guān)的服務(wù)器及相應(yīng)的終端上;研究了網(wǎng)絡(luò)狀態(tài)評估模型,并開發(fā)了相應(yīng)的監(jiān)控程序,作為“探針”部署在精心選取的測試點。通過仿真監(jiān)控程序的開發(fā)及運行,有效地提高了運維的效率,降低了運維成本,幫助運維人員第一時間獲取客觀的運維數(shù)據(jù)。
本文通過利用Selenium及Watij等開源軟件測試框架開發(fā)了仿真監(jiān)控程序,模擬使用者的真實操作,第一時間獲取到信息系統(tǒng)運行過程中的原始數(shù)據(jù),相對傳統(tǒng)的IT集中運行監(jiān)控,獲取的信息更為準確、客觀和真實。通過知識庫管理系統(tǒng)固化系統(tǒng)信息系統(tǒng)運維過程中各專業(yè)技術(shù)技能專家積累的大量的先驗知識;引入專家系統(tǒng)等,用于指導新人的操作,使得故障的定位和處理更為高效、準確。該系統(tǒng)實現(xiàn)了信息系統(tǒng)的仿真測試及智能運維功能,對于運維人員緊缺、運行環(huán)境復雜、運維系統(tǒng)較多的情況,具有很強的實際意義。
同時,需要指出的是,該類方法目前僅對B/S架構(gòu)的信息系統(tǒng)有效。對于C/S架構(gòu)的信息系統(tǒng)的仿真監(jiān)控,我們還需要探索有效的方法。沒有任何技術(shù)是放之四海而皆準的,我們需要具體問題具體分析、對癥下藥。