1

我一直在尝试为我的 JMX Enabled 应用程序编写一个 snmp 包装代理,它将把 JMX MBean 中布局的所有信息转换为 SNMP 属性。

我在试图了解从哪里开始以及使用什么方面有点不知所措。根据我的阅读,snmp4j 可能是 Java 的 snmp 库,但我无法理解 Snmp4jAgent 中的代码示例。

此外,通过阅读作者网站中对 SNMP4JAgentJMX的描述,我认为 Snmp4jAgentJMX 可以帮助我编写此代理,但我不明白如何使用它。实际上,查看示例代码(org.snmp4j.agent.mo.jmx.example.JMXTestAgent)我找不到代码向任何 MBean 或 JMX 工厂注册的部分,这让我假设我不明白正确地执行此代码。

对于没有 SNMP 经验的人,我非常感谢代码示例和/或一些教程或文档。

谢谢!!

4

2 回答 2

1

jmx2snmp 提供的 SNMP 代理不完整,有错误。编写 SNMP 代理几乎没有什么可做的。例如,不正确支持 SNMPv1(错误状态)。不支持 GETBULK(对于 SNMPv2 是必需的)。GETNEXT 调用代理中不存在的 OID,不返回下一个 OID,而是返回 noSuchObject(绝不能在 GETNEXT 上返回),根本不支持 SET,很可能还有许多其他问题。

因此,我建议将 SNMP4J-AgentJMX 与 SNMP4J-Agent 和 SNMP4J(作为这些作者)结合使用。示例代理在方法 addJvmManagementMibInstrumentaton 中的 MIB 检测类 JvmManagementMibInst 的初始化期间执行 JMX 和 SNMP 之间的映射。

在这里,您将找到大量如何完成描述性映射的示例。如果您已经有了 MIB 规范,那么您可以使用 AgenPro 生成 Mib 存根类,并且您基本上只需要执行示例 JvmManagementMibInst.java 类中所示的映射。

如果您还没有 MIB,那么我还建议使用 MIB 设计器工具(如 MIB Designer)来创建 MIB,因为这很可能是一个交互过程,当您发现更简单的方法时,您将不得不重新构建 MIB映射到 JMX。

于 2013-02-17T10:43:20.757 回答
0

经过大量研究,我发现这个包使用 snmp4j 代理来包装 JMX 并提供 SNMP 服务。

使用这个包,您所要做的就是注册 MBean 并更改 JMX-SNMP 映射。

于 2009-12-06T10:10:46.450 回答