net-snmp是遵循GPL的開源項(xiàng)目,www.net-snmp.org,目前已經(jīng)被很多Linux發(fā)行版內(nèi)置。Redhat就是典型代表。
然而通常net-snmp中包含的MIB僅限于RFC或者其它規(guī)范統(tǒng)一了的MIB,另外對于特殊企業(yè)的MIB也納入了事實(shí)上的規(guī)范,如Cisco、 Microsoft等大型公司,但是對于一些小型企業(yè)或者個(gè)人想要通過SNMP來實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的話,如果重新自己實(shí)現(xiàn)SNMP AGENT,顯然工作量很大,不僅要包含規(guī)范統(tǒng)一定義的MIB,還有企業(yè)私有的欲納入監(jiān)管的MIB; net-snmp顯然認(rèn)真地 考慮了這樣的需求,筆者經(jīng)過18個(gè)小時(shí)的簡單了解,大概整理出使用net-snmp擴(kuò)展私有MIB的大致方法,草于下文。 參考: http://net-snmp./tutorial/tutorial-5/toolkit/mib_module/index.html step 1、首先需要使用net-snmp的相關(guān)API編寫MIB相關(guān)C代碼, 1、MFD/mib2c:這是一種通過net-snmp提供的mib2c程序自動(dòng)生成相關(guān)代碼的方式 2、A simple scalar attached to a variable:適合于簡單變量類型的object 3、A simple scalar with the value returned from code:適用于任何變量類型的object step 2、然后將剛寫的MIB C code編譯進(jìn)net-snmp,有幾種方法: 1、compile it into master agent: 1)將剛編寫的碼加入net-snmp的src目錄, 2)通過configure的option指示make編譯該mib,如./configure --with-mib-modules="myobject" 3)make 4)make install 這樣,你的MIB就已經(jīng)被內(nèi)置如snmp服務(wù)程序中了,MIB的生效也就理所當(dāng)然 2、compile your code into a “subagent”:這種方式可以將subagent通過agentx協(xié)議與master agent通信,參考: http://net-snmp./tutorial/tutorial-5/toolkit/demon/index.html 這種情況subagent最終是一個(gè)獨(dú)立的application,包含兩種生成方式,一是通過net-snmp-config工具生成;二是自己編寫程序控制調(diào)用;后者更為靈活,subagent功能可以被集成在其它application中。 3、compile your code into pluggable shared object and tell the snmpd agent to load it,這種方式最后生成一個(gè).so的共享庫,用戶啟動(dòng)snmpd服務(wù)時(shí)可以通過指定參數(shù)的方式加載該共享庫以擴(kuò)展MIB,參考: http://net-snmp./tutorial/tutorial-5/toolkit/dlmod/index.html 本文轉(zhuǎn)自 http://kvw3000.spaces./blog/cns!FBFA57DE0E2C8CA2!167.entry |
|