肖招娣
(廣東電網有限責任公司 佛山供電局, 佛山 528000)
隨著企業信息化程度的增加,信息系統越來越多,網絡架構越來越復雜,系統運維人員壓力越來越大。原有的集中監控系統基于靜態環境的測評腳本是基于非生產環境的,與生產環境存在先天差異,無法真實反映生產環境下的用戶體驗,無法滿足系統運維需求,亟需實現真實環境下對各系統及網絡環境的監控。
對用戶而言,無論是計算機軟硬件環境問題、網絡問題,還是信息系統自身的問題,只要發起的請求在超過可承受的等待時間后才響應,都會籠統地反映“系統很慢”。僅依靠用戶的體驗,系統管理員很難迅速定位真正的原因所在。
通過實施本項目,用真實環境下用戶體驗實現對各系統和網絡環境的監控來取代靜態評測。用戶可以在自己的計算機上自主運行應用系統自適應仿真程序和網絡環境測試程序,集中監控平臺可以通過調用各監測點的仿真測試程序和網絡狀態評測程序,掌握各系統運行情況及網絡狀態。旨在及時發現問題、迅速定位問題,以便第一時間對癥下藥解決問題,減輕系統運維人員的壓力,提高信息系統用戶滿意度。
同時,利用知識管理庫存放各運維領域專家先驗知識,包括常見問題的原因及處理辦法,再利用專家系統,開發智能運維功能指導故障的定位與問題的處理,提高運維的效率和準確性。
系統架構,如圖1所示。
Selenium及Watij都是可以用于網頁自動化測試的開源工具,均為直接在瀏覽器運行腳本。作為開源軟件自動化測試框架,使用它們開發的軟件自動化測試腳本,相對使用商用軟件自動化測試工具錄用的腳本,自適應性更強,更接近真實用戶的操作。使用Win32的消息鉤子錄制的腳本在交互性和自適應性方面更是無法與基于Selenium和Watij編寫的腳本比擬,且基于Win32消息鉤子的開源軟件測試框架基本上不支持Web程序的測試,例如White:基于消息鉤子錄制的腳本更適合用于C/S架構的軟件的測試。

圖1 系統架構圖
由于本文研究的仿真監控及智能運維的信息系統均為B/S架構的,故選擇了Selenium及Watij。
為了模擬用戶的真實操作,系統以軟件自動化測試開源框架為基礎。使用軟件自動化測試框架編寫仿真測試程序,相對于使用軟件自動化測試工具錄制測試腳本,對測試對象具有更好的適應性,與被測試系統的互動可以完全模擬人的操作,幾乎接近使用者的真實操作。如此方式獲取的是原始數據,更具備客觀性、真實性和準確性。針對多種開源的軟件自動化測試框架比對,選擇了Selenium和Watij這兩種開源框架。根據信息系統的特點,最終確定個別信息系統使用Selenium,其余信息系統使用Watij。相對于Selenium,Watij編寫的代碼更為清晰、靈活、易于理解、更快的執行速度,提供了截圖功能,對上傳、下載、彈窗窗口等功能的支持更好。但是,Watij目前只支持IE瀏覽器,而Selenium支持多種瀏覽器,這是Selenium相對于Watij的優勢,也是個別應用需要選擇Selenium進行開發的原因。
同時,引入的重要技術還包括知識庫管理系統及專家系統,通過人工智能技術實現智能運維功能。
在軟件的開發架構方面,以Java的MVC模型為依托,實現整個監控系統的高內聚、低耦合,增強系統的擴展性、伸縮性、易維護性。
在語言方面,融合了Java語言、JavaScripts、VB以及批處理。在計算機技術方面,整合了軟件自動化測試技術、Java的企業級應用技術、xObject插件技術及Windows操作系統的底層技術。
該系統的功能包括:網絡狀態評測模型的研究,自適應仿真測試程序和網絡狀態評測程序的研發,集中監控平臺定時或不定時調用各地監測點的測試程序和評測程序,測試報告內容的采集、處理與告警信息的發布,運維知識的管理,專家診斷功能的研發。
通過運行仿真測試程序,捕獲故障:通過網絡狀態評估模型,判定網絡是否存在故障;在網絡正常的情況下,運行被監測信息系統的自適應仿真測試程序,根據日常運維過程中積累的經驗所設置的閾值進行判斷,當某個操作超過閾值時,判定為故障,并將相關的信息傳遞給后續程序處理。
知識庫主要用于存放各領域運維專家的先驗知識,包括計算機網絡專家的經驗,相關信息系統的資深運維人員的經驗。考慮到知識庫所固化的規則直接影響到后續的智能運維的質量,該系統的知識庫通過人工錄入、導入產生,并提供修改、停用、刪除的功能。專家系統基于知識庫的規則,提供智能診斷功能,將可能產生故障故障的原因及建議的處置方式發送給相關運維人員。
技術架構,如圖2所示。

圖2 仿真測試程序技術架構圖
1.4.1 仿真測試功能
1、實現仿真測試功能:模擬用戶的操作。在該仿真測試監控系統的開發過程中,用到如下關鍵技術:
1) 用開源框架實現IE標準控件的控制,模擬用戶對網頁的真實操作和交互。使用合適的開源測試框架實現對不同的信息系統關鍵功能的監控,該系統主要用到了Selenium及Watij這兩個開源軟件測試框架;
2) 熟悉HTML基本語法,根據 Web 頁面的源代碼來確定對多種常見 Web對象的識別、操作和自動驗證,必要時候還可以使用正則表達式;
3) 運用操作系統知識,將具體的監控業務處理邏輯文件做成批處理文件;
4) 集中監控平臺定時調用各監控結點客戶端仿真程序。
2、仿真測試程序的運行:在客戶端瀏覽器觸發仿真測試時,可以選擇在仿真測試服務器或者在當前客戶機本地運行自動化測試程序。前者通過運行ActiveX插件的形式,實現對服務器本地存放的批處理文件的調用;后者使用Java的Servlet技術,在本機運行測試程序。
同時,服務應用程序也會根據配置的頻率運行仿真測試服務器本地存放的仿真測試批處理文件,該調用過程使用VB實現。
3、對測試結果的管理:包括存儲成為不同的文件并上傳到FTP和存儲到數據庫中,方便對結果的處理。存儲到FTP中的主要用于最近一次運行結果的查看。
建立仿真測試結果報告數據庫,用于記錄歷次運行仿真測試程序得到的反映系統運行狀況的客觀數據,實現測試結果的完整記錄。將所有的測試結果均存放在MySQL數據庫中,方便查詢。也為后續信息系統運維工作領域的大數據分析和使用推薦系統進行智能診斷提供數據基礎。
4、短信告警:對于影響力比較大的系統,除了實現定時監測外,還要對監測結果進行進一步處理。設定一個閾值,當測試的響應時間超過設定的閾值時,通過與公司短信平臺的接口,實現短信的告警功能,以便在第一時間掌握系統的問題,將影響降至最低。
5、查看最近一次的測試報告:比較緊急的情況下,可能需要查看最近一次的測試報告,而不是運行一次測試程序,該功能通過Java的Servlet技術實現。
1.4.2 知識庫功能
在本系統中,知識庫是專家系統功能的基礎,用于存放專家系統設計所應用的規則集合,包含規則所聯系的事實及數據,它們的全體構成知識庫。該系統使用開源的知識庫管理系統Wiki。目前該知識庫主要存放了服務器、數據庫、存儲、網絡、防火墻、常見主營業務系統運維的先驗知識。同時,該知識庫提供了基本的規則錄入、修改、刪除和查詢等功能,為知識的管理與更新提供功能。
1.4.3 智能運維功能
專家系統是一個智能計算機程序系統,其內部含有大量的某個領域專家的經驗知識,能夠利用人類專家的知識和解決問題的方法來處理該領域問題。它運用人工智能技術和計算機技術,根據知識庫中管理的專家先驗知識,進行推理和判斷,模擬人類專家的決策過程。
該系統的智能運維功能,基于專家系統實現,其基礎為知識庫功能模塊所固化的專家先驗知識。當故障發生的時候,利用知識庫和專家系統的功能模擬專家決策的過程,迅速定位問題并提供解決方案建議。在監測到故障發生時,在發出告警的同時,將當前可能造成故障的原因及推薦的解決方法告知故障處理人員,供其參考使用。同時,在處理的時候,可以不斷的對現有的知識庫規則進行滾動修編。
我局先后在門戶系統、營銷系統及計量自動化系統等關鍵系統的關鍵操作進行了仿真監控程序的開發,運行在相關的服務器及相應的終端上;研究了網絡狀態評估模型,并開發了相應的監控程序,作為“探針”部署在精心選取的測試點。通過仿真監控程序的開發及運行,有效地提高了運維的效率,降低了運維成本,幫助運維人員第一時間獲取客觀的運維數據。
本文通過利用Selenium及Watij等開源軟件測試框架開發了仿真監控程序,模擬使用者的真實操作,第一時間獲取到信息系統運行過程中的原始數據,相對傳統的IT集中運行監控,獲取的信息更為準確、客觀和真實。通過知識庫管理系統固化系統信息系統運維過程中各專業技術技能專家積累的大量的先驗知識;引入專家系統等,用于指導新人的操作,使得故障的定位和處理更為高效、準確。該系統實現了信息系統的仿真測試及智能運維功能,對于運維人員緊缺、運行環境復雜、運維系統較多的情況,具有很強的實際意義。
同時,需要指出的是,該類方法目前僅對B/S架構的信息系統有效。對于C/S架構的信息系統的仿真監控,我們還需要探索有效的方法。沒有任何技術是放之四海而皆準的,我們需要具體問題具體分析、對癥下藥。