我有一个用Apache Camel编写的独立Java应用程序,我想通过SNMP监控它。我认为Camel使用Spring的JMX(@ManagedAttribute,@ ManagedResource等),我可以在JDK jconsole中看到各种与Camel相关的对象。当我在启用SNMP的情况下运行我的应用程序时:
-Dcom.sun.management.snmp.interface=127.0.0.1
-Dcom.sun.management.snmp.port=16101
-Dcom.sun.management.snmp.acl=false
我可以使用SNMP浏览器连接到它,我也可以在那里看到很多东西。到目前为止一切顺利,但为了让我能够利用它,我需要知道或弄清楚JMX对象是如何映射到SNMP OID的。有没有办法找出它是如何完成的,或者至少是由谁 - Spring,JVM?有什么想法吗?
答案 0 :(得分:1)
我不是百分百确定我在Google上找到的信息(BTW ......首先打eh !;))是否仍然相关,我也没有办法解决并验证(公司,锁定工作站。叹息!)但是,看起来默认的SNMP实现不是很容易扩展。
根据"JVM Monitoring: JMX or SNMP?",您只能访问JVM-MANAGEMENT-MIB.mib
中定义的内容如果事情发生变化,我会感兴趣...
答案 1 :(得分:1)
我认为您不能通过SNMP公开带注释的Spring管理的bean。您列出的命令行参数仅用于监控有关JVM本身的指标,请参阅SNMP Monitoring and Management;因此,可能无法弄清楚 OID,但您必须自己定义它们,可能是另一个成熟的SNMP框架或库。
答案 2 :(得分:0)
Camel使用javax.management.MBeanServer来注册mbeans。我不记得我们做了与SNMP有关的任何事情。我假设JMX会提供开箱即用的集成,因为JVM有一个应该桥接到JMX的SNMPAgent。