王曉建,徐定凱
(國(guó)網(wǎng)浙江省電力公司湖州供電公司,浙江 湖州 313000)
隨著我國(guó)電力系統(tǒng)信息化水平的逐步提高和智能電網(wǎng)發(fā)展戰(zhàn)略的提出,電力企業(yè)信息系統(tǒng)的服務(wù)器、網(wǎng)絡(luò)裝置、安全裝置等設(shè)備越來(lái)越多,其重要性也日益顯現(xiàn).
電力部門信息系統(tǒng)由多種硬件、軟件共同構(gòu)成一個(gè)復(fù)雜的平臺(tái),涵蓋業(yè)務(wù)范圍廣,專業(yè)系統(tǒng)數(shù)量眾多,其承擔(dān)業(yè)務(wù)寬、應(yīng)用多、技術(shù)難度大.監(jiān)視這樣的系統(tǒng),在日常工作中需要關(guān)注大量的運(yùn)行指標(biāo),如存儲(chǔ)空間、設(shè)備負(fù)荷、網(wǎng)絡(luò)流量等.這些數(shù)據(jù)往往分散,且格式不統(tǒng)一,數(shù)量巨大,非從業(yè)人員難以掌握.在日常運(yùn)行維護(hù)中,信息運(yùn)維人員一直處于被動(dòng)狀態(tài),總是等到故障或缺陷發(fā)生后,才能安排人員搶修,偶爾即使發(fā)現(xiàn)有設(shè)備故障,也要浪費(fèi)大量的時(shí)間和精力去查找故障原因,工作效率低下.因此,電力部門急需一套能支持信息設(shè)備的實(shí)時(shí)監(jiān)控應(yīng)用軟件,以滿足采集服務(wù)器、網(wǎng)絡(luò)設(shè)備、數(shù)據(jù)庫(kù)、安全設(shè)備等運(yùn)行指標(biāo),并具備詳細(xì)的實(shí)時(shí)監(jiān)控和多元化的報(bào)警功能,能將軟件系統(tǒng)采集的實(shí)時(shí)數(shù)據(jù)保存于歷史數(shù)據(jù)庫(kù),以便于對(duì)信息設(shè)備運(yùn)行狀況做統(tǒng)計(jì)運(yùn)行分析.
PI(Plant Information System)是由美國(guó)OSI Software公司開發(fā)的一套基于C/S結(jié)構(gòu)的軟件應(yīng)用平臺(tái).作為上層管理信息系統(tǒng)網(wǎng)絡(luò)與工廠底層控制網(wǎng)絡(luò)連接的橋梁,PI在信息集成中扮演著重要和特殊的作用.PI用于工業(yè)信息系統(tǒng)數(shù)據(jù)的自動(dòng)采集、監(jiān)視與存儲(chǔ),可實(shí)時(shí)存儲(chǔ)每個(gè)工作環(huán)節(jié)多年的歷史數(shù)據(jù).它提供了精確、清晰的操作畫面,操作員可方便查看生產(chǎn)環(huán)節(jié)當(dāng)前的生產(chǎn)狀況,同時(shí)也可方便地查看歷史生產(chǎn)情況.與此同時(shí),PI也可為應(yīng)用開發(fā)人員和最終用戶提供方便快捷的生產(chǎn)信息.考慮到歷史生產(chǎn)數(shù)據(jù)統(tǒng)一存放在數(shù)據(jù)倉(cāng)庫(kù)中,所有公司人員都可查閱所有生產(chǎn)信息,因此PI在實(shí)際的生產(chǎn)和業(yè)務(wù)管理之間起到了橋梁紐帶作用.
2.1.1 前臺(tái)架構(gòu)體系
前臺(tái)監(jiān)視程序考慮其用戶相對(duì)固定,用戶較少,信息安全要求較高,所以采用C/S構(gòu)架,其架構(gòu)體系如圖1所示.
圖1 前臺(tái)架構(gòu)體系示意圖
前臺(tái)監(jiān)視程序需要從配置文件讀取管理業(yè)務(wù)數(shù)據(jù),如操作系統(tǒng)分類以及各監(jiān)視目標(biāo)設(shè)備等,實(shí)現(xiàn)程序的邏輯管理關(guān)系.從PI數(shù)據(jù)庫(kù)讀取歷史數(shù)據(jù)與實(shí)時(shí)數(shù)據(jù),實(shí)現(xiàn)歷史分析與狀態(tài)監(jiān)視;與此同時(shí),還需要與運(yùn)行參數(shù)采集程序之間建立TCP連接,實(shí)現(xiàn)網(wǎng)絡(luò)通信,如取消/開啟某設(shè)備的監(jiān)測(cè),重新載入監(jiān)視目標(biāo)設(shè)備等.
2.1.2 后臺(tái)架構(gòu)體系
后臺(tái)應(yīng)用程序包括兩方面:PI數(shù)據(jù)庫(kù)接口程序和運(yùn)行參數(shù)采集程序.其框架結(jié)構(gòu)如圖2所示.
圖2 前臺(tái)架構(gòu)體系示意圖
從運(yùn)行的配置文件獲取采集所需設(shè)備是參數(shù)采集程序的主要作用,針對(duì)不同的裝置需要采集不同運(yùn)行參數(shù),不需要在采集目標(biāo)服務(wù)器上安裝客戶端,而是利用裝置系統(tǒng)自帶功能進(jìn)行數(shù)據(jù)采集.讀取采集程序采集的各設(shè)備運(yùn)行參數(shù)是PI接口程序的作用,同時(shí)依據(jù)運(yùn)行參數(shù)分類、設(shè)備標(biāo)識(shí)等信息自動(dòng)生成PI測(cè)點(diǎn)的Tag,把采集到的運(yùn)行參數(shù)的值儲(chǔ)存至PI數(shù)據(jù)庫(kù).如果測(cè)點(diǎn)不存在則新建測(cè)點(diǎn),如果測(cè)點(diǎn)存在則用更新該測(cè)點(diǎn)的最近值.利用此策略可以實(shí)現(xiàn)PI數(shù)據(jù)庫(kù)測(cè)點(diǎn)的自動(dòng)運(yùn)維.
采集程序與接口媒介交換數(shù)據(jù)采用協(xié)商格式的XML文件,參數(shù)采集程序?qū)⒉杉Y(jié)果存儲(chǔ)成XML格式文件.PI接口程序定期掃描XML文件存放目錄,并對(duì)掃描結(jié)果進(jìn)行分析處理,最終存入PI數(shù)據(jù)庫(kù).如果處理不成功,將該XML文件轉(zhuǎn)移到ERROR文件夾,由技術(shù)人員對(duì)錯(cuò)誤進(jìn)行分析;如果處理成功,則立即刪除該XML文件.此方式優(yōu)勢(shì)在將PI數(shù)據(jù)庫(kù)接口程序與采集程序區(qū)分開來(lái),PI接口程序不需要與實(shí)際設(shè)備通信,采集程序不需要與數(shù)據(jù)庫(kù)建立通信,運(yùn)行穩(wěn)定,即使出現(xiàn)PI數(shù)據(jù)庫(kù)不能正常訪問(wèn),也不會(huì)影響運(yùn)行參數(shù)采集功能.等PI數(shù)據(jù)庫(kù)恢復(fù)正常運(yùn)行時(shí),可以自動(dòng)將緩存在服務(wù)器本地文件系統(tǒng)中的XML格式文件進(jìn)行導(dǎo)入.
采集結(jié)果以XML文件保存在服務(wù)器本地文件系統(tǒng),如:PAGE(換頁(yè)空間利用率)、CPU(CPU利用率)、MEMORY(內(nèi)存利用率).
電力企業(yè)信息系統(tǒng)中服務(wù)器種類較多,不同服務(wù)器上運(yùn)行的操作系統(tǒng)也不相同,充分挖掘其自帶的功能,實(shí)現(xiàn)不同的操作系統(tǒng)運(yùn)行參數(shù)采集.這種最有效、最方便的方式是本系統(tǒng)數(shù)據(jù)采集功能的主要設(shè)計(jì)思路,如圖3所示:
圖3 數(shù)據(jù)采集方式
利用系統(tǒng)自帶的遠(yuǎn)程管理接口——WMI(Windows Management Instrumentation)讀取Windows系統(tǒng)的PC服務(wù)器設(shè)備運(yùn)行參數(shù),如文件系統(tǒng)利用率、內(nèi)存利用、CPU利用率等.WMI可以獲得關(guān)于計(jì)算機(jī)內(nèi)部狀態(tài)的信息,對(duì)進(jìn)程、磁盤和其他系統(tǒng)對(duì)象進(jìn)行建模,從而實(shí)現(xiàn)“指示”功能.
采用數(shù)據(jù)庫(kù)提供的編程接口,直接向SQL和Oracle數(shù)據(jù)庫(kù)發(fā)送SQL腳本,并收集數(shù)據(jù)庫(kù)返回的腳本解析結(jié)果.通過(guò)此形式完成設(shè)備運(yùn)行數(shù)據(jù)采集,如表空間利用率、會(huì)話數(shù)、運(yùn)行指標(biāo)等.
通過(guò)SSH建立遠(yuǎn)程會(huì)話連接,向LINUX的PC服務(wù)器和UNIX小型機(jī)發(fā)送Shell命令,收集服務(wù)器返回的命令結(jié)果.通過(guò)這種方式進(jìn)行運(yùn)行數(shù)據(jù)采集,如內(nèi)存利用、CPU利用率、文件系統(tǒng)利用率等.
利用服務(wù)器原生系統(tǒng)自帶的功能實(shí)現(xiàn)多種方式并存的采集模式,無(wú)需安裝插件,主要優(yōu)勢(shì)如下:
實(shí)現(xiàn)方式簡(jiǎn)單.當(dāng)有新設(shè)備加入時(shí),采集程序無(wú)需在目標(biāo)側(cè)安裝額外軟件,僅需填寫IP地址、用戶名及密碼等相關(guān)信息即可方便實(shí)現(xiàn)監(jiān)控.
數(shù)據(jù)采集高效可靠.數(shù)據(jù)采集模塊為監(jiān)控提供了設(shè)備運(yùn)行的實(shí)時(shí)數(shù)據(jù),因此數(shù)據(jù)采集模塊在整個(gè)監(jiān)控軟件中起到中流砥柱的作用.由于充分利用原生系統(tǒng)自帶的功能進(jìn)行數(shù)據(jù)采集,系統(tǒng)資源占用較少、程序穩(wěn)定性高、工作效率較高.
采集內(nèi)容豐富.電力企業(yè)信息系統(tǒng)設(shè)備繁多,運(yùn)行設(shè)備所采集的信息又各不相同,個(gè)性化程度較高,能滿足特殊監(jiān)控需求.例如,通過(guò)獲取SQL腳本運(yùn)行結(jié)果的方式實(shí)現(xiàn)數(shù)據(jù)采集,只需通過(guò)編寫對(duì)應(yīng)的SQL腳本,即可方便實(shí)現(xiàn)新增信息采集.
2.4.1 數(shù)據(jù)接入流程
PI數(shù)據(jù)庫(kù)存儲(chǔ)接口程序的流程如圖4.它負(fù)責(zé)將服務(wù)器在特定時(shí)刻的運(yùn)行參數(shù)值存入PI數(shù)據(jù)庫(kù),解析數(shù)據(jù)采集程序生成的XML采集結(jié)果文件.定時(shí)器模塊定期對(duì)采集結(jié)果文件存放目錄進(jìn)行快速掃描,并將掃描得到的XML結(jié)果文件放入結(jié)果文件集合中.如果多次掃描后結(jié)果文件集合都為空,表示采集程序出現(xiàn)異常,即沒(méi)有產(chǎn)生新的采集結(jié)果文件,程序立即通過(guò)手機(jī)短信通知相應(yīng)的系統(tǒng)管理員,通過(guò)此模式可以有效檢測(cè)監(jiān)視采集程序是否運(yùn)行正常.得到結(jié)果文件集合后,從中逐個(gè)取出XML結(jié)果文件進(jìn)行處理,若處理過(guò)程中出現(xiàn)異常,則記入日志并將該文件復(fù)制到ERROR文件夾,以便進(jìn)行錯(cuò)誤分析;若成功將文件中的數(shù)據(jù)存入PI數(shù)據(jù)庫(kù),則刪除該文件.
圖4 接口程序流程圖
2.4.2 XML文件處理
處理XML結(jié)果文件的方法如圖4虛線框部分所示.首先獲取該文件,得到<PAGE>、<MEMORY>和<CPU>等運(yùn)行參數(shù)和對(duì)應(yīng)的時(shí)間戳,然后逐條處理此類信息.在將運(yùn)行參數(shù)值保存到PI數(shù)據(jù)庫(kù)前,需要自動(dòng)判斷需存測(cè)點(diǎn)是否存在,若不存在,需要先在PI數(shù)據(jù)庫(kù)中創(chuàng)建相應(yīng)測(cè)點(diǎn).確保測(cè)點(diǎn)存在以后,然后判斷該測(cè)點(diǎn)是否允許更新,若需要更新則將運(yùn)行參數(shù)和對(duì)應(yīng)的時(shí)間戳保存到PI數(shù)據(jù)庫(kù),否則將該值丟棄.
為提高程序運(yùn)行效率,避免與PI數(shù)據(jù)庫(kù)的頻繁通信,在應(yīng)用程序中建立一張測(cè)點(diǎn)控制表,表中包含程序本身創(chuàng)建的所有PI測(cè)點(diǎn)和相關(guān)配置,包括:測(cè)點(diǎn)文字描述、最近更新值、最近更新時(shí)間、對(duì)應(yīng)的目標(biāo)設(shè)備編號(hào)和是否需要更新到PI數(shù)據(jù)庫(kù)等.如表1所示.
表1 測(cè)點(diǎn)控制列表
為實(shí)現(xiàn)監(jiān)視程序端控制采集程序,如重新載入監(jiān)控目標(biāo)、人工發(fā)起運(yùn)行參數(shù)采集、取消/開始某設(shè)備監(jiān)控等,需實(shí)現(xiàn)采集程序與監(jiān)視程序之間的數(shù)據(jù)通信,流程如圖5所示.
圖5 數(shù)據(jù)通信流程圖
監(jiān)視程序是本系統(tǒng)長(zhǎng)期運(yùn)行模塊,正常運(yùn)行時(shí),可以最小化到系統(tǒng)托盤圖標(biāo),它定期讀取所有監(jiān)測(cè)設(shè)備的每個(gè)監(jiān)視指標(biāo)的實(shí)時(shí)運(yùn)行數(shù)據(jù),并與預(yù)先設(shè)定的閥值進(jìn)行比較,如果采集的數(shù)據(jù)超過(guò)閥值,則進(jìn)行告警,退出告警界面,在告警信息窗口顯示相關(guān)狀態(tài)和信息,如圖6所示.
圖6 數(shù)據(jù)通信流程界面
本應(yīng)用軟件包含三個(gè)程序:PI數(shù)據(jù)庫(kù)接口程序、采集程序和監(jiān)視程序.3個(gè)程序全部基于Visual Studio 2005環(huán)境下開發(fā),通過(guò)C語(yǔ)言進(jìn)行研發(fā).在于PI數(shù)據(jù)庫(kù)通信方面,利用PI-SDK實(shí)現(xiàn)PI數(shù)據(jù)庫(kù)的連接和數(shù)據(jù)存儲(chǔ).在日志記錄方面,利用第三方開源庫(kù)Apache Log4net作為單獨(dú)的日志記錄模塊.在數(shù)據(jù)采集方面,利用第三方開源庫(kù)Routrek.granados來(lái)支持SSH協(xié)議.本應(yīng)用軟件的實(shí)現(xiàn)架構(gòu)如圖7所示.
圖7 程序框架示意圖
數(shù)據(jù)采集程序從配置文件config.xml中讀取采集內(nèi)容,按照預(yù)先設(shè)定的時(shí)間間隔(如文件系統(tǒng)利用率120 min采集一次,CPU利用率5 min采集一次)完成定期采集,并將采集的結(jié)果以固定格式的XML文件保存在服務(wù)器本地目錄.PI接口程序讀取該XML文件,并完成解析,然后將解析得到的數(shù)據(jù)保存到PI數(shù)據(jù)庫(kù).由于XML文件中保存的每條信息都自帶時(shí)間戳,所以采集程序和PI接口程序沒(méi)有時(shí)間上的耦合關(guān)系,允許PI接口程序退出或暫停,下次恢復(fù)正常運(yùn)行時(shí)仍能將數(shù)據(jù)自動(dòng)保存進(jìn)PI數(shù)據(jù)庫(kù).最后,監(jiān)控主程序通過(guò)PI數(shù)據(jù)庫(kù)中的實(shí)時(shí)歷史數(shù)據(jù)和配置文件中的配置信息進(jìn)行狀態(tài)監(jiān)控、歷史數(shù)據(jù)分析和指標(biāo)告警等.
本文主要描述了新型的服務(wù)器實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).主要完成三個(gè)方面的內(nèi)容:設(shè)備運(yùn)行參數(shù)信息的自動(dòng)采集、采集信息的可視化展現(xiàn)和采集信息存入PI數(shù)據(jù)庫(kù).
通過(guò)本軟件的開發(fā)與應(yīng)用,解決了電力企業(yè)信息系統(tǒng)運(yùn)行監(jiān)視難題,提升信息系統(tǒng)運(yùn)維水平,使企業(yè)信息化更上一個(gè)臺(tái)階.
[1]史興華.供電企業(yè)實(shí)時(shí)/歷史數(shù)據(jù)庫(kù)PI典型應(yīng)用案例[M].北京:中國(guó)電力出版社,2009.