VisualVM加jstatd通过JMI方式远程监控远程主机
VisualVM是用来监控JAVA应用底层JVM的各项参数的,包括CPU,内存、线程、垃圾回收等待状态。
启动VisualVM后,可以直接查看本机的JAVA应用,但是如果要看远程服务器上的JAVA应用JVM状态,就需要进行配置。配置方法如下:
1. 登录远程服务器,进入cd $JAVA_HOME/bin目录,创建jstatd安全管理文件jstatd.all.policy,然后加入下面的内容:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
[root@test bin]# cd $JAVA_HOME/bin [root@test bin]# vim jstatd.all.policy grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };
2. 执行RMI监控启动命令:
rmiregistry 2020 &jstatd -J-Djava.security.policy=all.policy -p 1099 -J-Djava.rmi.server.hostname=192.168.100.52 &
[root@test bin]# rmiregistry 2020 &jstatd -J-Djava.security.policy=all.policy -p 1099 -J-Djava.rmi.server.hostname=192.168.100.52 &
rmiregistry 2020 启动的是远程消息服务
jstatd -J-Djava.security.policy=all.policy 根据安全策略启动监控(如果hosts文件配置不正常,单独启动可能会异常)
-p 1099 启动1099端口 用来给 VisualVM进行监控
-J-Djava.rmi.server.hostname=192.168.100.52 本机IP(如果hosts文件配置不正常,可以手动指定本机IP供VisualVM进行配置监控)
& 后台运行
3. 配置远程监控 (一般在Windows主机或者VisualVM监控软件所在的机器上)
启动VisualVM监控软件,在远程节点右键点击选择新添加一个远程主机,然后输入远程主机的IP,端口等内容,点确定,进行监控。
可以通过双击具体应用,来查看监控信息,比如Visual GC,这个是查看JAVA GC状态的,可以查看各内存分区的活动状态。
备注:
如果执行过程出现异常,一般是因为CLASSPATH, 主机名/etc/hosts配置错误:
解决方案是加入CLASSPAHT
JAVA_HOME=/usr/java/jdk1.6.0_45 CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
或者在启动命令中加入主机名:
rmiregistry 2020 &jstatd -J-Djava.security.policy=all.policy -p 1099 -J-Djava.rmi.server.hostname=192.168.100.52 &