殷 強,張應(yīng)忠,陸 滔,李 浩,林 放
(中國人民解放軍32037部隊,云南 姚安 675300)
隨著通信業(yè)務(wù)的不斷擴展,設(shè)備不斷增加,崗位人員的值班壓力也不斷增大,終端告警需要及時發(fā)現(xiàn),因此進行智能化管理,開發(fā)自動告警系統(tǒng)顯得越發(fā)重要。
目前網(wǎng)絡(luò)管理大多采用簡單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol,SNMP),SNMP是目前應(yīng)用最為廣泛的TCP/IP網(wǎng)管標(biāo)準(zhǔn),也是應(yīng)用最為廣泛的網(wǎng)絡(luò)管理協(xié)。該協(xié)議由國際互聯(lián)網(wǎng)工程任務(wù)組(The Internet Engineering Task Force,IETF)基于TCP/IP參考模型制定,是計算機網(wǎng)絡(luò)管理的標(biāo)準(zhǔn)之一[1]。設(shè)備中開啟SNMP服務(wù),網(wǎng)絡(luò)管理員就可以遠程查看設(shè)備狀態(tài),同樣也能夠在事件發(fā)生時向網(wǎng)絡(luò)管理員發(fā)出警告[2]。但對不支持SNMP協(xié)議而又需要監(jiān)視的設(shè)備,作者在現(xiàn)有查閱文獻中暫未發(fā)現(xiàn)對此類問題的研究,對此,本文利用計算機來處理數(shù)字圖像很好的解決了這一難題。
當(dāng)圖像傳輸、辦公網(wǎng)、程控等通信出現(xiàn)中斷時,告警系統(tǒng)發(fā)出警報,管理人員就能及時的發(fā)現(xiàn)各系統(tǒng)、各設(shè)備在運行中出現(xiàn)的異常狀況。自動告警系統(tǒng)通過圖像處理實現(xiàn)對不支持SNMP的設(shè)備進行狀態(tài)監(jiān)視,同時對支持SNMP設(shè)備,監(jiān)視其端口狀態(tài)、流量信息、錯誤等信息并實現(xiàn)主動上報。維護人員無需逐個巡視和查看告警信息,就能及時感知、發(fā)現(xiàn)、定位故障,彌補人員巡查存在的工作漏洞,確保通信業(yè)務(wù)的正常運行。
本文采用圖像處理技術(shù)與SNMP相結(jié)合的方法,開發(fā)了通信狀態(tài)告警系統(tǒng),實現(xiàn)了對通信設(shè)備的狀態(tài)監(jiān)視,通過集中控制軟件就能及時的發(fā)現(xiàn)各設(shè)備的運行情況。該系統(tǒng)的實現(xiàn)具有一定的現(xiàn)實意義和較高的推廣應(yīng)用價值。
本文利用電荷耦合元件(Charge-coupled Device,CCD)圖像傳感器外設(shè)方式,采集指示燈狀態(tài)信息,統(tǒng)計設(shè)備的顏色指示燈像素信息,實現(xiàn)對不支持SNMP協(xié)議通信設(shè)備的監(jiān)視;利用SNMP協(xié)議獲取設(shè)備端口信息,實現(xiàn)對支持SNMP協(xié)議的通信設(shè)備的監(jiān)視。使用上述方法,可以實現(xiàn)不對現(xiàn)有設(shè)備狀態(tài)進行更改,從而完成一個完整的狀態(tài)告警系統(tǒng)。
本系統(tǒng)設(shè)計目標(biāo)包括:
(1)通過圖像傳感器獲取圖像信息。
(2)基于OpenCV對采集的圖像進行處理。
(3)開啟通信設(shè)備SNMP協(xié)議獲得端口狀態(tài)信息。
(4)設(shè)計客戶端與服務(wù)器模式,實現(xiàn)語音告警。
系統(tǒng)硬件部分由攝像頭、服務(wù)器、客戶端主機、網(wǎng)絡(luò)設(shè)備等組成,其結(jié)構(gòu)如圖1所示。網(wǎng)絡(luò)設(shè)備狀態(tài)的原始圖像由OpenCV調(diào)用攝像頭進行采集獲得;SNMP開啟后,服務(wù)器作為網(wǎng)絡(luò)管理系統(tǒng)(Network Management System,NMS)通過被管理設(shè)備Trap獲取網(wǎng)絡(luò)設(shè)備端口狀態(tài)信息。通過數(shù)字圖像處理技術(shù),服務(wù)器對獲取的原始圖像進行處理分析,從而獲取被監(jiān)視設(shè)備狀態(tài)信息??蛻舳酥鳈C用于接收遠程告警信息并上報,從而進行語音告警輸出。
圖1 告警系統(tǒng)總體設(shè)計
軟件部分利用OpenCV強大的圖像處理能力和SNMP簡單易配置的優(yōu)點,采用Python、C#語言進行自主開發(fā)[3]。
系統(tǒng)各個模塊具體工作流程如圖2所示。
圖2 系統(tǒng)模塊工作流程
圖像處理模塊實現(xiàn)圖像采集、定位像素點位置、RGB顏色識別、異常報警等功能。
圖像采集由OpenCV庫程序調(diào)用攝像設(shè)備讀取設(shè)備完成。圖像處理的第一步是對圖像數(shù)據(jù)進行采集。圖像采集模塊主要是以每秒15幀的幀頻(使用的攝像頭最高掃描頻率為每秒15幀)對圖像進行提取,實時獲取設(shè)備原始狀態(tài)信息,為后續(xù)處理提供圖像。
對于像素點位置的獲取,由于攝像頭是固定的,圖像位置沒有移動,手動確定該狀態(tài)指示燈的相對位置。
獲得固定位置后,通過統(tǒng)計每個指示燈圖像各像素點的RGB顏色分量,來判斷鏈路狀態(tài)。一個像素點的顏色是由RGB三個值來表現(xiàn)的[4],所以像素點矩陣對應(yīng)三個顏色矩陣,本文所采集的主要設(shè)備的指示燈有紅、綠、灰三種狀態(tài),對不同狀態(tài)指示燈的R、G、B三種顏色分量進行直方圖統(tǒng)計,如圖3、圖4、圖5所示。分析直方圖可知,紅燈狀態(tài)下各像素點紅色分量值較高,其中又以255最多,我們把這種像素點稱為R點,經(jīng)過實驗比對,設(shè)置紅燈判定條件為:R點占總像素點比例大于等于30%。類似地,綠燈狀態(tài)下各像素點綠色分量值較高,基本位于200以上,我們把這種像素點稱為G點,由于實際光照條件下,綠燈像素偏白,經(jīng)過實驗比對,設(shè)置綠燈判定條件為:G點占總像素點比例大于等于10%。
圖3 紅色狀態(tài)燈的RGB直方圖分布
圖4 綠色狀態(tài)燈的RGB直方圖分布
圖5 灰色狀態(tài)燈的RGB直方圖分布
對像素點個數(shù)統(tǒng)計和顏色分量識別后就完成了告警信息統(tǒng)計,若出現(xiàn)告警,則向告警輸出模塊發(fā)送告警信息。狀態(tài)獲取日志如圖6所示。
圖6 監(jiān)視狀態(tài)獲取
SNMP模塊主要用于采集被監(jiān)視端性能指標(biāo),如設(shè)備特性、數(shù)據(jù)流量(包括發(fā)送和接收)、通信超載、錯誤等信息,實現(xiàn)在最短的時間內(nèi)發(fā)現(xiàn)故障[5]。
基于.NET平臺,利用C#開發(fā),開發(fā)工具Microsoft Visual Studio 2010。同時為保障使用SNMP協(xié)議與網(wǎng)絡(luò)設(shè)備相連,必須要在防火墻設(shè)置中允許SNMP協(xié)議通過[6]。該模塊本質(zhì)上就是從被管設(shè)備上的管理信息庫(Management Information Base,MIB)取得相應(yīng)的對象標(biāo)識符(Object IDentifier,OID)對象值,圖7為MIB樹形結(jié)構(gòu)圖。
圖7 MIB樹形結(jié)構(gòu)圖
實現(xiàn)SNMP模塊需進行網(wǎng)絡(luò)基礎(chǔ)配置及網(wǎng)絡(luò)設(shè)備MIB參數(shù)獲取,和獲取網(wǎng)絡(luò)設(shè)備屬性值[7]。
(1)網(wǎng)絡(luò)基礎(chǔ)配置
網(wǎng)絡(luò)設(shè)備開啟中SNMP。具體步驟為:①開啟Agent服務(wù),②配置SNMP版本,③配置NMS管理權(quán)限,④配置向SNMP Agent輸出Trap信息。
(2)獲取網(wǎng)絡(luò)設(shè)備MIB參數(shù)值
主要是通過已知的網(wǎng)絡(luò)設(shè)備管理IP和交換機的OID來查詢實現(xiàn),例如華為交換機2403系統(tǒng)時間標(biāo)識為1.3.6.1.2.1.1.3.0。但大多數(shù)時候網(wǎng)絡(luò)設(shè)備的OID信息是未知的,如何知道OID屬性值成為要點。一種方式是通過廠家獲取,另一種方式是通過軟件獲得。本文利用軟件GetIf來獲得,通過它可以知道當(dāng)前設(shè)備的狀況,能把網(wǎng)絡(luò)設(shè)備的OID信息、端口狀態(tài)、路由表、ARP、支持的協(xié)議以及網(wǎng)絡(luò)設(shè)備中mac-address-table中的信息都讀了出來。本軟件主要對ifOperStatus(當(dāng)前接口操作狀態(tài)),name(接口名稱),ifInOctets(接口接受到的字節(jié)),ifOutOctets(接口發(fā)送的字節(jié)),ifSpeed(接口速率)的狀態(tài)進行獲取。
(3)獲取網(wǎng)絡(luò)設(shè)備屬性值
.NET可以通過調(diào)用SnmpSharpNet庫,來獲得設(shè)備狀態(tài),通過數(shù)據(jù)分析后,設(shè)置門限。當(dāng)設(shè)備狀態(tài)出現(xiàn)異常時,應(yīng)用程序?qū)⑼ㄟ^聲音、圖像變化等手段進行報警。圖9為網(wǎng)絡(luò)監(jiān)視界面。
圖8 GetIf軟件獲取Oid值
圖9 網(wǎng)絡(luò)監(jiān)視界面
獲取網(wǎng)絡(luò)設(shè)備通知首先要在被管理的網(wǎng)絡(luò)設(shè)備上設(shè)置trap發(fā)送的目的IP地址為管理系統(tǒng)的IP地址,以及發(fā)送的端口號,默認(rèn)端口號為162。管理系統(tǒng)在設(shè)置好的端口號上接收被管網(wǎng)絡(luò)設(shè)備的trap數(shù)據(jù)包,當(dāng)收到數(shù)據(jù)包時,將數(shù)據(jù)包的詳細內(nèi)容以彈出對話框的形式顯示在界面上,同時進行聲音提醒。
本文采用局域網(wǎng)模式將各機房連接,實現(xiàn)遠程狀態(tài)監(jiān)視,告警采用終端、服務(wù)器模式,進行告警輸出。如圖10所示。
告警輸出模塊通過TCP/IP協(xié)議在接收圖像處理和SNMP模塊告警信息時,通過調(diào)用Windows Sapi.spvioce自帶語音服務(wù),實現(xiàn)語音告警,并進行告警日志記錄[8]。
圖10 告警設(shè)計
程控和網(wǎng)橋告警輸出日志如圖11所示。
圖11 告警輸出日志
本文通過利用Python語言和OpenCV對圖像處理的成熟技術(shù),簡單、靈活、高效的完成了對通信鏈路的狀態(tài)監(jiān)視。在設(shè)備不能通過端口讀取狀態(tài)信息時,可以完成對所有具有狀態(tài)指示燈設(shè)備的監(jiān)視;通過啟用網(wǎng)絡(luò)設(shè)備的SNMP,在網(wǎng)絡(luò)管理服務(wù)器上基于.NET平臺利用C#開發(fā)了統(tǒng)一的管理系統(tǒng),通過圖像處理和SNMP協(xié)議的結(jié)合,高效完成了對網(wǎng)絡(luò)設(shè)備進行監(jiān)視,大大提高了網(wǎng)管效率,具有較高的推廣應(yīng)用價值。