基於SNMP網絡管理系統的實現

個推做爲國內最專業的第三方消息推送技術解決方案的服務商接入SDK用戶數高達90億,日活躍用戶達6.5億。日分發消息23億。在實際的運維環境中,須要時刻對網絡設備進行監控和管理,幷包含了各類網絡設備,包括交換機,路由器,服務器等等。安全

網絡是計算機通訊網的重要組成部分,它經過互連和協同工做來構成大範圍的信息處理系統。網絡管理指經過監督,組織,控制網絡通訊服務和信息處理等活動,確保計算機網絡的持續正常運行,並在運行出現異常時及時響應和排除故障。如何有效的進行區域內網絡的管理是計算機網絡可以有效,可靠,安全,經濟的提供服務的重要保障。服務器

認識SNMP協議
意義價值:SNMP協議能夠爲不一樣廠家,不一樣類型,不一樣型號的設備,定義一個統一的接口和協議,使得管理員能夠經過網絡,使用通用的規則管理位於不一樣物理空間的設備,從而大大提升網絡管理的效率,簡化網絡管理員的工做。網絡

圖片描述

SNMP協議處於OSI七層模型中的應用層協議。在1988年被制定,並被Internet體系結構委員會(IAB)採納做爲一個短時間的網絡管理解決方案;因爲SNMP的簡單性,在Internet時代獲得了蓬勃的發展,1992年發佈了SNMPv2版本,以加強SNMPv1的安全性和功能。如今,已經有了SNMPv3版本。目前大部分的網絡設備如交換機,路由器等都支持SNMP協議規範,SNMP協議已經成爲了網絡管理領域中的工業標準。app

一套完整的SNMP網絡設備監控系統系統主要包括管理信息庫(MIB)、管理信息結構(SMI)及SNMP報文協議,管理工做站利用SNMP進行遠程監控管理網絡上的全部支持這種協議的設備(如計算機工做站、終端、路由器、Hub、網絡打印機等),主要負責監視設備狀態、修改設備配置、接受事件警告等。
圖片描述框架

SNMP消息
在OSI模型中,傳輸層的數據單元也稱爲數據包(packets)。SNMP採用的是UDP(用戶數據報協議)做爲其傳輸層協議,併爲SNMP提供網絡服務,UDP協議的數據單元稱爲數據報(datagrams)。由於UDP是一種不可靠的數據報服務,因此並不能保證UDP數據報必定能達到目的,可是掉包問題並不對網絡管理產生大的影響。SNMP消息包含兩個部分:SNMP報頭和協議數據單元PDU(Protocol Data Unit),其中SNMP報頭包括SNMP版本號和團體名。SNMP版本號目前有三種:Version一、Version二、Version3。團體標識能夠做爲SNMP消息的口令,缺省值爲"public"。查看SNMP版本聯繫和區別(http://blog.csdn.net/zyboy2000/article/details/7221687)運維

  1. Get_Request:Manager端向Agent端發送讀取信息的請求;異步

  2. Get_ Next_Request:Manager端向Agent端 發送Get-Request組合起來查詢特定的表對象中的列元素。函數

  3. Get_Response:Agent端對Manager端請求的響應;(被動響應)spa

  4. Set_Request:Manager端向Agent端發送設備設置信息,Agent端可根據設置信息來改變設備狀態(包括設備名、設備屬性、刪除設備或使某一個設備屬性有效/無效等);.net

  5. Trap:當Agent端發生某些事件時,Agent端主動向Manager端發送陷阱信息,如關機事件。

SNMP4J簡介
SNMP4J 是一個企業級的免費開源的SNMP API for Java的類庫。基於JAVASE 1.4及以上。官網位於http://www.snmp4j.org/,提供相關JavaDoc和wiki。

圖片描述

Java Demo(實現對某一網絡主機獲取主機名稱)
圖片描述

圖片描述

圖片描述

圖片描述

圖片描述

圖片描述

SNMPTest.getRequest的Console:
OID: 1.3.6.1.2.1.1.5.0
Value: com-router

SNMP4J 重要的類和接口
Snmp:該包中的核心類,它提供發送和接受SNMP PDU的方法。擁有同步和異步的兩種方式。Snmp和傳輸協議無關。支持添加特定TransportMapping實例經過調用addTransportMapping(TransportMapping TransportMapping)方法或使用非默認的構造函數建立一個Snmp實例與相應的傳輸映射。傳輸映射用於傳入和傳出消息。
TransportMapping:該接口表明了SNMP4J所使用的傳輸層協議。這也是SNMP4J一大特點的地方。按照RFC的規定,SNMP是隻使用UDP做爲傳輸層協議的。而SNMP4J支持管理端和代理端使用UDP或者TCP進行傳輸。該接口有兩個子接口。
PDU:PDU類表明一個SNMP協議數據單元。PDU(針對Snmpv2c)、PDUv1(針對Snmpv1)、ScopedPDU(針對Snmpv3),但三個類除各自特別的一些參數外,都基本相同。PDU做爲基類,每每足夠提供大部分的特性。
Target*:一個Target接口定義了遠程SNMP實體的抽象表示。帶有一個地址對象,以及協議參數,好比重試次數和超時時間等。對於SNMPv1和SNMPv2c,適用CommunityTarget的實現。SNMPv3,適用UserTarget。
SNMP4J API調用流程

  1. 建立協議。通常可使用DefaultUdpTransportMapping實例,做爲傳輸層協議。

  2. 建立SNMP對象。填充TransportMapping做爲構造參數。

  3. 開啓監聽。

  4. 構造目標。設置Address,版本號,重試次數,超時時間等參數。

  5. 建立報文(PDU)。設置請求方式,查詢的OID。

  6. 發送報文。同步方式:調用snmp.send 方法;異步方式:須要設置監聽器。

  7. 獲取ResponseEvent。同步方式阻塞返回,異步方式在監聽線程中的回調函數中得到。ResponseEvent.getResponse(),獲取回覆報文。

  8. 釋放資源。Snmp.close()。

SNMP網絡管理系統
一個SNMP管理的網絡包含三個主要部分:被管理設備、代理和網絡管理系統(NMS)。被管理設備就是處於被管理的網絡中的多個設備,負責收集和存儲管理信息;代理是安裝在被管理設備中的軟件程序(如大部分交換機自帶SNMP代理程序,僅需開啓便可);網絡管理系統就是用於監控被管理設備執行狀態的軟件系統。SNMP進行網絡管理時,通常採用Manager/Agent結構集中式管理信息的方式,管理工做站爲Manager端,網絡中的各個設備爲Agent端。

圖片描述

SMI管理消息結構
管理信息結構SMI是SNMP的基礎部分,定義了SNMP框架所使用的信息的組成,結構和表示,爲描述MIB對象和協議如何交換信息奠基了基礎。

MIB管理消息庫
在複雜的網絡環境中,網絡設備的類型各式各樣,因此設備的信息也因設備類型不一樣而不一樣,爲了將這些信息能經過網絡管理系統進行管理,必須採用一套標準來描述這些設備的信息,因此SNMP定義了MIB(Management Information Base)。MIB分爲標準MIB和私有MIB,標準MIB適用於全部網絡設備,而私有的MIB則由設備廠家向有關機構申請後自行定義。MIB採用樹狀結構,每一個節點每一個結點分配了一個字符串和一個小整數做爲標號,即OID(Object Identifier)。
圖片描述

MIB結構樹中任一對象的名字就是從根到對象結點的路徑上各個節點的標號序列,標號之間用點分隔。如被管理設備中每一個網絡接口的IP地址信息表示爲:iso.org.dod.internet.mgmt.mid.ip,它的數字表示爲:1.3.6.1.2.1.4。

標準MIB的基本OID覺得1.3.6.1.2.1前綴,而私有的MIB的基本OID覺得1.3.6.1.4.1前綴。若是在某一節點下有多個信息,則以列表方式存在,好比IP地址信息中包括子網掩碼、網關地址等。

網絡環境拓撲圖
圖片描述

系統設計圖
圖片描述

系統案例和效果

基於SNMP網絡管理系統的實現,完美解決了跨設備,跨物理位置的網絡設備的監控和管理。實時監控當前設備的狀態,網絡流入流出速率,cpu/內存的使用情況 等必要信息。
如比當天的流量實時監控:
圖片描述

網絡管理員能夠對設備集中的進行監控和管理,而且直觀的從界面中獲取實時流量數據,分析當前網絡設備的當前狀態,即時相應處理和維護。

相關文章
相關標籤/搜索