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
}
}
$ 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
$ 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
$ 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。
参考:
- http://java.sun.com/javase/6/docs/technotes/guides/management/snmp.html
- http://www.fifi.org/cgi-bin/man2html/usr/share/man/man5/snmpd.conf.5snmp.gz
在配置完后但是设置的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
启动JVM的命令里加上-Dcom.sun.management.snmp.port=9998,注意-D这个
就是在执行命令java -Dcom.sun.management.snmp.port=9998 时不行
但是我在在把端口改成161 报错说是该端口已经被占用了,安装官方的配置但是配置managment的配置问和acl 时,好像是不能正常读取配置文件?
能说说你的启动jvm的命令具体是什么样的吗?
就是下面的命令:java -Dcom.sun.management.snmp.port=9998
请问我做完后,图片显示不出来,然后/cacti-0.8.7g/rra/localhost_jvmmempoolcommitted_11.rrd’: No such file or directory呢?请问