使用SNMP监视JVM

jac*_*n44 3 jvm snmp snmp4j mib

我正在使用snmp来监控一些服务器(主要是win2k3),在我上网的过程中,我找到了Oracle用来监控JVM,JVM-MANAGEMENT-MIB的MIB.到目前为止我用它做的是:

  • 使用snmp.acl和management.properties配置JVM
  • 使用mibcc编译JVM-MANAGEMENT-MIB并替换mib.bin.

通过这些步骤,我认为我很高兴尝试.所以我用snmp4j创建了一个java程序,当我尝试从JVM mib调用OID时,我遇到了一个错误Request timed out.奇怪的是,我只编译JVM-MANAGEMENT-MIB,所以我应该只能访问那些OID,对吧?但事实并非如此,我仍然可以访问cpu使用情况,进程数量......

那么我错过了什么?谢谢

L.R*_*.R. 6

将以下三个参数添加到JVM中,它应该是您所需要的.

-Dcom.sun.management.snmp.interface=127.0.0.1 \
-Dcom.sun.management.snmp.acl=false \
-Dcom.sun.management.snmp.port=16500 \
Run Code Online (Sandbox Code Playgroud)

好吧,你不需要编写一个java程序来验证它是否有效.net-snmp或一些MIB浏览器就足够了.

snmpwalk -v2c -c public 127.0.0.1:16500 SNMPv2-SMI::enterprises.42.2.145.3.163.1.1.4

SNMPv2-SMI::enterprises.42.2.145.3.163.1.1.4.2.0 = STRING: "Java HotSpot(TM) 64-Bit Server VM"
SNMPv2-SMI::enterprises.42.2.145.3.163.1.1.4.3.0 = STRING: "Sun Microsystems Inc."
SNMPv2-SMI::enterprises.42.2.145.3.163.1.1.4.4.0 = STRING: "20.10-b01"
SNMPv2-SMI::enterprises.42.2.145.3.163.1.1.4.5.0 = STRING: "Java Virtual Machine Specification"
SNMPv2-SMI::enterprises.42.2.145.3.163.1.1.4.6.0 = STRING: "Sun Microsystems Inc."
Run Code Online (Sandbox Code Playgroud)