怎么远程监控JVM?

一、通过Jstatd方式远程机器

1、在服务器上安装jstatd组件。由于安装JDK时配置选项的原因,有的服务器中没有默认安装jstatd组件。jstatd是openjdk中的一个package,使用apt-get命令安装openjdk即可。关于jstatd组件的详细介绍可参考:http://download.oracle.com/javase/6/docs/technotes/tools/share/jstatd.html
sudo apt-get install openjdk-6-jdk     
2、在服务器上配置jstatd的security policy文件。jstatd是一个监控JVM从创建到销毁过程中资源占用情况并提供远程监控接口的RMI(Remote Method Invocation,远程方法调用)服务器程序,它是一个Daemon程序,要保证远程监控软件连接到本地的话需要jstatd始终保持运行。jstatd运行需要通过-J-Djava.security.policy=***指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy,文件内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};     
3、修改服务器hosts文件中的IP地址。要使Java VisualVM成功连接到远程服务器上,服务器端应该在/etc/hosts文件中把本机地址设为本机的IP地址。使用hostname -i命令查看,如果显示的是127.0.0.1或者与本机实际IP不一致的话,需要把/etc/hosts文件中相应的地址改为本机实际IP。
4、运行jstatd守护程序。由于jstatd需要保持一直运行,所以建议使用screen命令执行jstatd程序,命令如下:
screen jstatd -J-Djava.security.policy=jstatd.all.policy如果需要RMI日志功能的话,还可以在启动参数中加入-J-Djava.rmi.server.logCalls=true。jstatd开始运行后,使用CTRL+A+D断开screen界面,回到shell界面。如果想切换回jstatd运行界面的话,使用screen -r -d命令即可。
5、通过Java VisualVM连接到服务器监控Java程序。在Java VisualVM程序窗口左侧“远程”项目右键选择“添加远程主机”,在弹出的对话框中输入远程主机的IP地址,确认提交后即可看到相应的远程主机和在上面运行的Java程序,连接成功后应该会显示Jstatd及其PID。
二、通过JMX连接远程机器, 需要经过下面的配置:
1、修改远程机器JDK配置文件 (我这里远程机器是linux).
1)进入JAVA_HOMEjrelibmanagement目录
2)拷贝jmxremote.password.template这个文件到当前目录, 并改名为jmxremote.password
3)打开jmxremote.password文件,去掉 # monitorRole  QED 和 # controlRole  R&D 这两行前面的注释符号
2、修改远程机器上需要被监控的程序的配置文件 (我这里是监控Tomcat容器内部署的应用).
1)进入TOMCAT_HOMEin目录
2)linux下:打开catalina.sh文件,加入如下信息:
AVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.237
-Dcom.sun.management.jmxremote.port=18999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
windows下:打开catalina.bat文件,加入如下信息:
set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="8999" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false"
3)重启Tomcat服务。
3、客户端VisualVM配置
1)直接反键点击Remote,选择Add Remote Host...
2)在弹出的界面中输入远程机器的IP地址(192.168.0.237),这个IP地址会加入到Remote节点下.
3)反键点击这个IP地址,选择Add JMX Connection, 在弹出的界面中输入刚配置的端口号(18999), 这个连接会加入到该IP节点下.
4)反键点击这个连接,选择Open.



我的回答