2009-11-30 27 views
1

我一直在爲我的啓用JMX的應用程序編寫一個snmp包裝代理程序,它將JMX MBean中的所有信息轉換爲SNMP屬性。嘗試瞭解snmp4jAgentJMX的功能,以及它是否適合我需要的功能

我在試圖瞭解從哪裏開始以及如何使用方面有點不知所措。從我讀過的內容來看,snmp4j很可能是用於Java的snmp庫,但我無法理解Snmp4jAgent中的代碼示例。

此外,從作者網站中讀取SNMP4JAgentJMX的description,我認爲Snmp4jAgentJMX可以幫助我編寫此代理,但我無法理解如何使用它。實際上,查看示例代碼(org.snmp4j.agent.mo.jmx.example.JMXTestAgent),我找不到代碼在任何MBean或JMX工廠中註冊的部分,這導致我認爲我沒有理解正確的代碼做什麼。

我非常感謝代碼示例和/或一些教程或文檔,對於沒有使用過SNMP的人員。

謝謝!

回答

1

jmx2snmp提供的SNMP代理不完整並且存在錯誤。編寫SNMP代理還有很多工作要做。例如,SNMPv1未正確支持(錯誤狀態)。 GETBULK不受支持(SNMPv2必需)。 GETNEXT在代理中調用一個不存在的OID,不返回下一個OID,而是返回noSuchObject(它絕不會在GETNEXT上返回),SET完全不受支持,而且很可能還有很多其他問題。

因此,我建議與SNMP4J代理和SNMP4J結合使用SNMP4J-AgentJMX(如那些的作者)。實例代理在addJvmManagementMibInstrumentaton方法中的MIB instrumentation類JvmManagementMibInst的初始化期間執行JMX和SNMP之間的映射。

在這裏您將找到大量示例描述如何完成描述。如果您已經有了MIB規範,那麼您可以使用AgenPro生成Mib存根類,並且您將不得不基本只執行映射,如示例JvmManagementMibInst.java類中所示。

如果您還沒有MIB,那麼我還建議使用MIB設計工具(如MIB Designer)來創建MIB,因爲這很可能是一個交互過程,您將不得不重構MIB您會發現更簡單的映射到JMX的方法。

+0

哇。這是3.5年前!但我喜歡你的回答:-) – Ben 2013-02-17 13:56:11

0

很多研究它之後,我發現,使用SNMP4J劑包JMX並給出了SNMP服務this包。

使用此軟件包,您只需向MBean註冊並更改JMX-SNMP映射即可。