我一直在尝试为我的JMX Enabled应用程序编写一个snmp包装器代理,它将把JMX MBeans中所有已放置的信息转换为SNMP属性。
我在尝试了解从哪里开始以及使用什么方面有点茫然。从我读过的内容来看,snmp4j可能是针对Java的snmp库,但我无法理解Snmp4jAgent中的代码示例。
另外,通过阅读作者网站上的description SNMP4JAgentJMX,我认为Snmp4jAgentJMX可以帮助我编写这个代理,但我无法理解如何使用它。实际上,看一下示例代码(org.snmp4j.agent.mo.jmx.example.JMXTestAgent),我找不到代码在任何MBean或JMX Factory中注册的部分,这让我想到了我不理解的东西正确地说明了这段代码的作用。
我非常感谢代码示例和/或一些没有SNMP经验的人员的教程或文档。
谢谢!
答案 0 :(得分:1)
jmx2snmp提供的SNMP代理不完整且有错误。编写SNMP代理还有很多工作要做。例如,未正确支持SNMPv1(错误状态)。不支持GETBULK(SNMPv2必须支持)。 GETNEXT在代理中调用了一个不存在的OID,不会返回下一个OID而是返回noSuchObject(它不能在GETNEXT上返回),SET根本不受支持,很可能还有许多其他问题。
因此,我建议将SNMP4J-AgentJMX与SNMP4J-Agent和SNMP4J(作为其作者)结合使用。 exmple代理在addJvmManagementMibInstrumentaton方法中的MIB检测类JvmManagementMibInst中初始化期间执行JMX和SNMP之间的映射。
在这里,您将找到大量示例,说明如何进行描述性映射。如果您已经有MIB规范,那么您可以使用AgenPro生成Mib存根类,并且您必须基本上只执行示例JvmManagementMibInst.java类中所示的映射。
如果您还没有MIB,那么我还建议使用MIB设计器工具(如MIB Designer)来创建MIB,因为这很可能是一个交互过程,您必须重新构建MIB发现更简单的映射到JMX的方法。
答案 1 :(得分:0)
经过大量研究后,我发现this包使用snmp4j代理来包装JMX并提供SNMP服务。
使用此包,您只需向MBean注册并更改JMX-SNMP映射。