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

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

此外,阅读 description对于作者网站中的 SNMP4JAgentJMX 我认为 Snmp4jAgentJMX 可以帮助我编写这个代理,但我不明白如何使用它。实际上,查看示例代码(org.snmp4j.agent.mo.jmx.example.JMXTestAgent),我找不到代码向任何 MBean 或 JMX Factory 注册的部分,这导致我假设我没有正确理解这段代码的作用。

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

谢谢!!

请您参考如下方法:

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 stub 类,并且基本上只需执行示例 JvmManagementMibInst.java 类中所示的映射。

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


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!