童辰+陳慧+季海
摘要
本文分析歸納了SNMP協(xié)議查詢網(wǎng)絡設備MIB的共性模式,提出一套通用的MIB信息采集流程,隔離了不同網(wǎng)絡設備0ID號不一致的差異性。設計基于消息隊列的Trap消息處理流程,在性能和能耗之間取得較好的平衡。最后使用Java語言基于B/S架構實現(xiàn)了該系統(tǒng)。
【關鍵詞】SNMP Trap 通用數(shù)據(jù)采集 消息隊列 線程池
簡單網(wǎng)絡管理協(xié)議(SNMP)是由IETF定義的一套網(wǎng)絡管理協(xié)議,常見的網(wǎng)絡傳輸設備均支持該協(xié)議。利用該協(xié)議,網(wǎng)絡管理程序可以獲取網(wǎng)絡傳輸設備的基本信息、內部模塊運行狀態(tài)、端口流量、告警事件等信息,是網(wǎng)絡管理軟件的核心功能。而網(wǎng)絡設備不同種類、不同品牌、不同型號提供的信息獲取索引均有所差異,單獨為每一個網(wǎng)絡設備編寫數(shù)據(jù)采集程序必然費時費力,所以亟需一套通過的數(shù)據(jù)采集框架,可以極大的減少網(wǎng)絡設備數(shù)據(jù)獲取的成本。
1SNMP協(xié)議分析
SNMP協(xié)議的使用者為網(wǎng)絡管理軟件,操作對象為網(wǎng)絡設備中的代理程序,包括兩種使用方式。查詢式。程序通過SNMP協(xié)議的snmpget和snmpwalk命令查詢代理程序,代理程序對外暴露的接口為一個MIB,這是一個多叉樹,每個樹節(jié)點用一個數(shù)字表示。上報式。代理程序發(fā)現(xiàn)有如鏈路故障、部件故障等信息時可主動將該信息進行上報,又稱為trap。
2通用數(shù)據(jù)采集系統(tǒng)設計
2.1功能描述
通用數(shù)據(jù)采集系統(tǒng)支持查詢式和上報式兩種網(wǎng)絡設備信息獲取模式,包含兩個模塊實現(xiàn)以上兩種方式的信息獲取。查詢式獲取網(wǎng)絡設備中的MIB節(jié)點值,對查詢的方式分析總結形成通用模板,進行簡單配置即可使網(wǎng)絡管理軟件接入新設備的查詢信息。上報式通過消息隊列緩存各類trap信息,并啟用多線程格式化、過濾并交網(wǎng)絡管理軟件顯示。
2.2通用MIB查詢模塊
snmpget和snmpwalk命令均查詢MIB節(jié)點值來獲取信息,MIB是一個多叉樹。每個節(jié)點有一個數(shù)字標識,節(jié)點的唯一標識為從根節(jié)點到該節(jié)點的數(shù)字序列。雖然每個OID號對應的值均有實際意義,但是不同設備該意義的OID號不一致,每一類設備寫一套MIB信息采集代碼,工作量大,這是MIB信息采集的困難所在。下面將MIB表示的實際含義與MIB號的映射關系整理為4種典型情況。
2.2.1單節(jié)點
通常該節(jié)點為mib樹的葉子節(jié)點,使用snmpget命令,輸入節(jié)點OID號即可獲得某設備該節(jié)點的信息。新增設備時,只需要修改OID值,程序即可自動獲取信息。
2.2.2—組節(jié)點
如果獲取的節(jié)點自身有一層子節(jié)點,且子節(jié)點標識同一種類型部件,如圖1所示,fan標識風扇,可以使用snmpwalk命令,輸入fan節(jié)點oid號,獲取fanl、fan2、fan3—組值。2.2.3多組節(jié)點
如圖1所示,對于端口信息,多個端口會有多組值,首先需要獲取端口數(shù)目,即節(jié)點portNum值為3。Port節(jié)點的所有屬性均有與節(jié)點數(shù)目相同的子節(jié)點數(shù),使用snmpwalk命令掃描port節(jié)點得到各自屬性混雜在一起,對需要提取的屬性可以針對其OID號特征設置篩選條件。
2.2.4多節(jié)點邏輯處理
一些網(wǎng)絡參數(shù)需要進行邏輯運算才能得到,運算的過程無共性,需要單獨函數(shù)處理,則在配置文件中建立參數(shù)名稱和處理函數(shù)的映射關系。
2.3Trap上報處理模塊
Trap消息是網(wǎng)絡設備在檢測到自身意外情況時利用SNMP協(xié)議主動上報的信息。若發(fā)生故障Trap消息數(shù)量會短時間內呈指數(shù)級增長,為保證每一條Trap消息均得到處理,使用消息緩存隊列,在消息數(shù)量暴增時先緩存下來,處理使用線程池技術根據(jù)隊列長度動態(tài)計算需要開辟的線程數(shù)量,既保證了消息劇增時計算機最大運算能力處理,也在正常情況下使計算機處于合適功耗。
3通用數(shù)據(jù)采集系統(tǒng)實現(xiàn)
系統(tǒng)使用Java語言開發(fā),通用MIB查詢模塊中使用List