針對開發(fā)SNMPTrap的總結.docx
《針對開發(fā)SNMPTrap的總結.docx》由會員分享,可在線閱讀,更多相關《針對開發(fā)SNMPTrap的總結.docx(4頁珍藏版)》請在裝配圖網上搜索。
淺談Linux中開發(fā)SNMP Trap SNMP Trap 是一種標準的報告機制,廣泛應用在各種網絡管理軟件中。本文詳細介紹了 SNMP Trap 的基本概念,以及 Linux 下面 net-snmp 對SNMP Trap的開發(fā)與應用。 1. SNMP Trap簡介 SNMP簡單網絡管理協(xié)議(Simple Network Management Protocol)是一種應用層協(xié)議,是TCP/IP協(xié)議族的一部分。它使網絡設備之間能夠方便地交換管理信息。能夠讓網絡管理員管理網絡的性能,發(fā)現(xiàn)和解決網絡問題及進行網絡的擴充。 SNMP Trap 是 SNMP 的一部分,當被監(jiān)控段出現(xiàn)特定事件,可能是性能問題,甚至是網絡設備接口宕掉等,代理端會給管理站發(fā)告警事件。假如在特定事件出現(xiàn)的時刻,不是由 Agent 主動通知 NMS(Network Management Station ),那么 NMS 必須不斷地對 Agent 進行輪詢。這是非常浪費計算資源的方法,正如人們用中斷通知 CPU 數據的到達,而不是讓 CPU 進行輪詢一樣。Trap 通知是更加合理的選擇。 總的來說,SNMP Trap 就是被管理設備主動發(fā)送消息給 NMS 的一種機制。 2. SNMP Trap報文 Trap PDU不同于其他類型的PDU格式,Trap PDU包含的部分都是為描述事件而定義的,見下圖所示: PDU enterprise agent-addr generic-trap specific-trap time- stamp var-list … 各部分的解釋如下: enterprise:企業(yè)標識、對象標識。 agent-addr:產生Trap的被管理設備的地址。 generic-trap:用于識別Trap的類型,取值0-6,6代表特殊代碼的擴展。 specific-trap:與generic-trap一起標識擴展Trap類型。 time-stamp:時間戳,系統(tǒng)從上次啟動到產生該Trap的系統(tǒng)時間。 var-list:綁定的對象標識-值等數據。 3. 設計一個 Trap 消息 Trap 消息也是用 MIB 來定義的。在下面的例子中,我們定義了一個 Trap 消息:fxPortReset、fxPortResetOK。 樹型結構如下: fxBMDevTrap . 1.3.6.1.4.1.33619.10.3.1.52 +----fxBMDevAlarm . 1.3.6.1.4.1.33619.10.3.1.52.1 +----fxBMPortAlarm . 1.3.6.1.4.1.33619.10.3.1.52.1.1 |----fxPortReset . 1.3.6.1.4.1.33619.10.3.1.52.1.1.1 |----fxPortResetOK . 1.3.6.1.4.1.33619.10.3.1.52.1.1.2 fxPortReset、fxPortResetOK被定義為 NOTIFICATION類型,即 SNMPv2 類型的 Trap。 4. SNMP Trap的實現(xiàn) 把定義的MIB命名為fxBMDevTrap.txt,利用mib2c.notify.conf配置文件,生成fxBMDevTrap.c和fxBMDevTrap.h。此生成方法參照mib2c工具的使用。 由模版生成的文件,不論哪種對象,都會有固定模式的整體結構。在模版文件中對節(jié)點進行定義,函數定義。處理函數,用來處理代理端所要發(fā)送的數據,數據的添加就是我們要手工實現(xiàn)的。我們所要做的工作就是把所需上報的數據導入到其中。 模版是針對單個變量來處理的: 1) Trap處理函數 int send_fxPortReset_trap( void ) 其實現(xiàn)主要為: snmp_varlist_add_variable(&var_list, snmptrap_oid, OID_LENGTH(snmptrap_oid), ASN_OBJECT_ID, fxPortReset_oid, sizeof(fxPortReset_oid)); 首先添加trap對象,指定告警的對象為fxPortReset。 如果trap需要根據情況綁定數據,以提供更多事件信息,可繼續(xù)添加數據到鏈表,也可指定綁定數據的對象標識符。 snmp_varlist_add_variable(&var_list, fxBMPortIndex_oid, OID_LENGTH(fxBMPortIndex_oid), ASN_INTEGER, (u_char *)&temp, sizeof(temp)); 如果有多組數據綁定,就要簡單重復調用snmp_varlist_add_variable 函數,因此鏈表var_list包含了指定類型的數據。 一個 SNMP Trap創(chuàng)建成功后,調用相應的API將其發(fā)送出去即可: send_v2trap( var_list ); 最后需要做清理工作,代碼如下: snmp_free_varbind( var_list ); 具體可參考源代碼包~\agent\mibgroup\examples下的notification.c和notification.h文件。 2) Trap的觸發(fā) SNMP Trap是由Agent主動發(fā)出,NMS不對Trap做響應。當某個事件發(fā)生時,就會發(fā)送Trap消息。因此在事件觸發(fā)時,可以調用上面的Trap處理函數發(fā)送。相應地事件調用相應的事件處理函數,例如:在端口重啟時就可以調用send_fxPortReset_trap(),來發(fā)送PortReset的Trap。 3) SNMP_TRAP_API 關于SNMP Trap的發(fā)送,NET-SNMP給出了三個api函數:send_easy_trap, send_trap_vars, send_v2trap。 send_easy_trap: 發(fā)送SNMPv1和SNMPv2標準的Trap消息; send_trap_vars: 發(fā)送可添加綁定數據的Trap消息; send_v2trap: 支持綁定數據的SNMPv2擴展Trap。 參照源碼,send_easy_trap和send_v2trap最終都是調用send_trap_vars,只是傳遞參數不同而已。 5. NET-SNMP Trap實現(xiàn) 1) NET-SNMP Trap配置 我們將生成的XXX.c和XXX.h靜態(tài)編譯到snmpd進程中,Trap的發(fā)送還需指定管理端地址和端口。在配置文件中,添加下面關鍵字: authtrapenable 1 //打開trap自動告警的開關,1代表開啟、2代表關閉 trapsink host [community] [port] //指定trap發(fā)送的地址、共同體和端口 共同體和端口可以不指定,默認為public和162。 SNMPv2的Trap關鍵字為trap2sink。 2) SNMP Trap查看 MG-SOFT管理軟件可以接收Trap消息,啟動MIB Browser->Tools->Trap Ringer Console。在顯示面板上可以查看接收到Trap的發(fā)送端、接收端、時間、共同體、協(xié)議版本、對象以及綁定的數據等信息。 SNMP Trap分兩大類:標準Trap、擴展Trap。 標準Trap: generic字段標示Trap類型,specific字段為0,Time字段表示從snmpd啟動到Trap發(fā)生所經歷的時間,enterprise標示對象sysObjectID的值。 擴展Trap: generic字段均為6,enterprise和specific在Trap定義中給出,擴展的 Trap 通常是由以下幾個部分連接而成:enterprise + 0 + specific trap??捎蒭nterprise和specific一起來判斷該Trap對象,其他與標準Trap相同。 3) 其他問題 當開啟MG-SOFT軟件的Trap Ringer Console工具時,往往出現(xiàn)綁定162端口出錯,可能原因是162端口已經被占用。解決方法有兩種: a) 禁用服務,打開Windows下的本地服務,禁用windows自己的SNMP Trap功能,開啟MG-SOFT SNMP Trap Service。 b) 修改端口,打開MIB Browser->View->MIB Browser Preferences,設置Trap Ringer下的Ports,這里默認用的是162,我們也可以改成其他未使用的端口。同樣地,snmpd的配置文件中trapsink也要指定相同地端口。 總結 本文只關注SNMP Trap 的相關概念和開發(fā)方法。雖然 SNMP Trap能簡單地創(chuàng)建而且輕松地發(fā)送到指定管理端,但似乎這并不是重點,關鍵地事件什么時候發(fā)生,以及事件發(fā)生后如何通知snmpd進程發(fā)送Trap,都可以說是十分復雜的問題。對此,作為一個有理想的程序員,還需要堅定不移地繼續(xù)深入地了解更多 SNMP 的知識。- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 針對 開發(fā) SNMPTrap 總結
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.szxfmmzy.com/p-9063311.html