SNMP 協議是用來管理設備的協議,目前SNMP已成為網路管理領域中事實上的工業標準,并被廣泛支持和應用,大多數網路管理系統和平臺都是基于SNMP的。如果 NMS( 網管系統 ) 需要查詢被管理設備的狀態,則需要通過 SNMP的get 操作獲得設備的狀態資訊。但由于告警資訊一般是由受管服務器進行主動告警,這時候就不能通過管理方主動使用snmpget來進行,而是由受管服務器通過SNMPTRAP進行。
一、什么是SNMPTRAP
SNMP trap(SNMP 陷阱):某種入口,到達該入口會使SNMP被管設備主動通知SNMP管理器,而不是等待SNMP管理器的再次輪詢。
SNMP Trap 是 SNMP的一部分,當被監控段出現特定事件,可能是性能問題,甚至是網路設備介面宕掉等,代理端會給管理站發告警事件。假如在特定事件出現的時刻,不是由 Agent 主動通知 NMS,那么 NMS 必須不斷地對 Agent 進行輪詢。這是非常浪費計算資源的方法,正如人們用中斷通知 CPU 資料的到達,而不是讓 CPU 進行輪詢一樣。Trap 通知是更加合理的選擇。用一句話來說的話,SNMP Trap 就是被管理設備主動發送訊息給 NMS 的一種機制。
uj5u.com熱心網友回復:
二、SNMPTRAP功能特點1、事件驅動,第一時間收到設備故障告警
以事件為驅動,由被監控的主機、網路設備、應用在發生故障時向NMS發送SNMP Trap,通過對接收到的SNMP Trap進行翻譯和展現,以最快速度向管理人員發送告警。SNMP Trap不同于SNMP的主動采集,SNMP采集服務器按照固定的時間間隔,由網管系統以詢問的方式,采集被監控端性能指標,因此發現被監控端性能問題的快慢取決于采集的頻率間隔。而SNMP Trap是以事件為驅動,在被監控端設定陷阱,一旦被監控端設備出現相關問題,立刻發送SNMP Trap,因此能夠在最短的時間內發現故障,避免因為設備故障帶來的經濟損失。
2、提供SNMP Trap的接收,并通過對Trap資訊翻譯,展現事件
支持設備,主機和應用的SNMP Trap資訊,從被動變為主動,全面監控IT系統。通過對SNMP Trap的翻譯和展現,一旦某個IT組件出現問題,可以在短時間之內,即可收到故障資訊,滿足企業的快速發現問題的需要。
通過SNMP Trap的接收規則定義,管理員可以過濾非重要設備的Trap資訊,也可以過濾被監控設備的非重要故障資訊,幫助管理員在第一時間收到真正需要的管理資訊。
3、定制SNMP Trap告警規則觸發告警,提供多種方式發送告警資訊
用戶通過管理端定制需要告警的SNMP Trap資訊,針對特定SNMP Trap事件通過郵件、短信、語音、微信等方式向相關人員發送報警,幫助管理人員快速收到IT系統故障資訊。
4、支持事件匯出
匯總特定時間內特定SNMP Trap事件,同時可以以Excel格式匯出事件資料,便于管理人員對故障資訊進行統計和分析。
5、支持各類設備廠家MIB庫的匯入
雖然國內各種網路設備都支持SNMP Trap,但是各個廠家的MIB庫并不能很好的支持公共標準,因此,很多監控系統都支持私有MIB庫的匯入,確保能夠全面兼容各個廠家設備的SNMP Trap資訊。
uj5u.com熱心網友回復:
三、SNMPTRAP作業流程1、Agent端
A、撰寫MIB檔案,確定好TRAP名稱等資訊(一般MIB設備廠商會提供)
B、命令方式:發送各種TRAP命令(Manager地址后面一定要加埠號162),在Manager端看反應結果,在Agent端無反應
C、自動觸發:配置snmpd.conf設定觸發TRAP,系統發生某類錯誤時會自動觸發相應型別的TRAP,發送給Manager
D、程式方式:一部份TRAP需要寫C語言程式,用相應的api(send_easy_trap或send_v2trap)發送
2、Manager端
A、配置snmptrapd.conf檔案,設定訪問權限
B、將MIB檔案匯入到mibs檔案夾中
C、用perl等腳本語言撰寫處理trap的程式
D、配置snmptrapd.conf檔案,添加traphandler項,將不同的TRAP對應到不同的處理程式上
3、流程圖

圖中在測驗機 M1 上啟動 snmptrapd 行程,并且在 UDP 162 埠上監聽 SNMP Trap 資訊,一旦收到 Trap,snmptrapd 將所接收到的 Trap 資訊內容列印到一個本地的文本檔案中。 機器 M2 模擬發送 SNMP Trap 的設備,將呼叫 net-snmp 的命令列程式 snmptrap 發送一個 Trap。
uj5u.com熱心網友回復:
四、SNMPTRAP在ZABBIX上實作程序1、設定ZABBIX接收SNMP Trap
1)、安裝依賴的程式包
yum install -y net-snmp-utils net-snmp-perl
2)、下載和解壓Zabbix原始碼包
tar -zxvf zabbix-2.2.1.tar.gz
3)、從原始碼檔案中復制腳本和添加執行權限
cp ./zabbix-2.2.1/misc/snmptrap/zabbix_trap_receiver.pl /usr/binchmod +x /usr/bin/zabbix_trap_receiver.pl
4)、設定Trap接收器和團體名稱
vi /etc/snmp/snmptrapd.conf
# you can set multiple community names:
# authCommunity execute public
# authCommunity execute S7di@kjh8
authCommunity execute public
perl do "/usr/bin/zabbix_trap_receiver.pl"
5)、編輯zabbix_server.conf組態檔啟用SNMP Trap
vi /etc/zabbix/zabbix_server.conf
StartSNMPTrapper=1
SNMPTrapperFile=/tmp/zabbix_traps.tmp (注:必須跟zabbix_trap_receiver.pl腳本中設定的相同)
6)、重啟zabbix_server服務使配置生效
/etc/init.d/zabbix-server restart
7)、設定SNMP MIBs
MIBs默認在系統目錄/usr/share/snmp/mibs下,添加MIB名稱到/etc/snmp/snmp.conf組態檔中(如果不存在則手動新建組態檔),它們將被Net-SNMP行程用來決議trap OID值。
例:mibs +JUNIPER-MIB:JUNIPER-FABRIC-CHASSIS:BGP4-MIB
8)、重啟snmptrapd服務
/etc/init.d/snmptrapd restart
2、配置ZABBIX
1)、創建"SNMP trap fallback"模板和"SNMP trap fallback"監控項:
監控項名稱:SNMP trap fallback
型別:SNMP trap
鍵值:snmptrap.fallback
資料型別:Log
注:該監控項用來收集所有不匹配的trap
2)、創建觸發器以通知管理員關于新的不匹配trap:
觸發器名稱: Unmatched SNMP trap received from {HOST.NAME}
運算式: {Template SNMP trap fallback:snmptrap.fallback.nodata(300)}=0
3)、創建"Template SNMP traps"模板并鏈接到"Template SNMP trap fallback"
在"Template SNMP traps"模板中,為trap創建需要的監控項. key值使用snmptrap[regex]格式,
例:
Key: snmptrap["SNMPv2-MIB::coldStart"]
替代OID值(數字或文本),您可以使用任何從一個trap文本中的單詞/短語:
Key: snmptrap["No route to host"]
在這種情況下,Zabbix從匹配的地址中捕獲所有SNMP Trap包含"No route to host"。
4)、為監控項創建觸發器
在前面創建的模板,為必要的專案(Trap)創建觸發器.
這里涉及一些變數,以前面例子中的監控項為例創建觸發器:
運算式:
{Template SNMP traps:snmptrap["SNMPv2-MIB::coldStart"].nodata(5m)}=0
意思是如果5分鐘后,trap接收和自動回傳OK狀態,則觸發器進入警告狀態
5)、查看ZABBIX獲取到的資料

五、總結
SNMP Trap是一種事件驅動型的監控方式,避免了監控系統的資源浪費,提高了警告的及時性和準確性。目前很多監控系統都提供SNMP Trap的監控方式,主動型監控是比較推薦的選擇方式。
uj5u.com熱心網友回復:
贊。。。。。。uj5u.com熱心網友回復:
請教一下,agent端也是一臺電腦嗎,它和需要監控的設備又以什么方式交換資訊?或者我可不可以認為需要監控的設備自帶一個配置好的agent,我只需要配置manager端就可以了?uj5u.com熱心網友回復:
-----通過SNMP Trap的接收規則定義,管理員可以過濾非重要設備的Trap資訊,也可以過濾被監控設備的非重要故障資訊,幫助管理員在第一時間收到真正需要的管理資訊。請教一下,這個如何過濾,在哪里配置?
配置的內容是什么樣子的?能否提供一個樣例供參考?
uj5u.com熱心網友回復:
本地127.0.0.1可以收到資料,在思科官網上下載2960MIB庫,放到/usr/share/snmp/mibs/里,并加入到了/etc/snmp/snmptrap.conf中,zabbix可以收到資訊,但是貌似沒有決議出來!請問是哪里的問題???
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/119537.html
標籤:網絡維護與管理
