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