1 jstatd配置
需要jdk支持,jre不支持。(可以用jre运行,单独安装jdk,只用jstatd)新建文件jstatd.all.policy(可自定义文件名),内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
执行命令(文件名与上一步相同):
jstatd -J-Djava.security.policy=jstatd.all.policy
查看1099端口是否正常开启。
2 jmx配置
添加如下jvm参数(根据情况填入相应的内网或外网ip地址和端口):-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9008
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.1.111
参照如下两个例子:
2.1 监控普通java程序
可在~/.bash_profile最后追加如下配置:export JAVA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9008
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.1.111"
使上述配置生效:
source ~/.bash_profile
启动想要监控的java程序。
2.2 监控tomcat
在tomcat的bin目录下的catalina.sh中约236行处(搜索# ----- Execute The Requested Command ----)添加如下配置:# ----- Execute The Requested Command -----------------------------------------
[ $1 != "stop" ] && JAVA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9008 \
-Djava.rmi.server.hostname=192.168.1.111 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
export JAVA_OPTS
启动tomcat即可。
3 iptables配置
需把jstatd和jmx用到的端口添加例外,由于JMX还额外启动了一个随机端口,所以需要设置第三条的端口范围。在/etc/sysconfig/iptables中添加如下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1099 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9008 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10080:65535 -j ACCEPT
重启iptables:
service iptables restart