使用Cacti监控JVM

Cacti官方论坛里有几个监控JVM的模板:

导入到Cacti后,需要启用JVM的SNMP Agent,方法如下:
1. 启动JVM的参数里加入-Dcom.sun.management.snmp.port=9998 这个是指定SNMP Agent的监听端口。
2. 设置访问权限

$ sudo cp $JRE_HOME/lib/management/snmp.acl.template $JRE_HOME/lib/management/snmp.acl
$ sudo vi $JRE_HOME/lib/management/snmp.acl

acl = {
{
communities = public, private
access = read-only
managers = localhost
}
}

trap = {
{
trap-community = public
hosts = localhost
}
}


3. 设置配置文件的权限,必须只能为启用JVM的用户只读,否则不能工作。(management.properties不用修改,使用默认配置即可)

$ sudo chmod 600 management.properties snmp.acl
$ sudo chown jetty management.properties snmp.acl

4. 重启JVM,用netstat命令检查9998端口是否已被监听或用snmpwalk命令检查。

$ sudo netstat -tlunp |grep 9998
$ snmpwalk -v 2c -c public localhost:9998 .1.3.6.1.4.1.42

5. 为了让远程的Cacti主机可以访问,可使用snmpd的proxy功能将请求转发到localhost的JVM SNMP Agent上。修改snmpd的配置文件,添加
proxy -v 2c -c public localhost:9998 .1.3.6.1.4.1.42
然后重启snmpd服务。在Cacti主机上以snmpwalk命令检查,应该能得到与上一步中snmpwalk命令一样的输出。snmpwalk -v 2c -c public remotehost .1.3.6.1.4.1.42
6. 至此,可以在Cacti里为JVM主机添加监控图表了,注意Device的SNMP Options配置里SNMP Version要选择Version 2。

参考:

6 Replies to “使用Cacti监控JVM”

  1. 在配置完后但是设置的JVM 响应端口com.sun.management.snmp.port=9998 是总是报下面的错误
    Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/management/snmp/port=9998
    Caused by: java.lang.ClassNotFoundException: com.sun.management.snmp.port=9998
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    Could not find the main class: com.sun.management.snmp.port=9998. Program will exit.
    但是我在其配置文件中/usr/java/jre/lib/management/management.properties 和snmp.acl 也做了配置后再试重启JVM 但是snmp agent port 还是不能正常启动,在查看器官方的配置时,和气官方的配置是一样的,不过在其官方提供了一个文件就是JVM-MANAGEMENT-MIB.mib 不知道是在什么地方定义的,还请指点一下
    thanks

  2. 就是在执行命令java -Dcom.sun.management.snmp.port=9998 时不行
    但是我在在把端口改成161 报错说是该端口已经被占用了,安装官方的配置但是配置managment的配置问和acl 时,好像是不能正常读取配置文件?

  3. 请问我做完后,图片显示不出来,然后/cacti-0.8.7g/rra/localhost_jvmmempoolcommitted_11.rrd': No such file or directory呢?请问

Comments are closed.