java自带的监控工具VisualVM(二)远程监控

时间:2021-01-10 11:09:58

ps:尝试了网上的几个网友提供的方法,始终不得其法,汇总后,终于尝试成功!将一些需要注意的细节也记录下来以后备用!

我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面.

要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote connection方式.
分别是jstatd和JMX方式: 这里主要介绍的是通过JMX方式.

JMX方式:

首先讲述需要账号密码的方式:

  1.修改远程需要被监控机子的jdk配置文件;
  •   进入JAVA_HOME\jre\lib\management\
  •   拷贝一份jmxremote.password.template并改名为jmxremote.password到当前目录,并去掉# monitorRole  QED 和 # controlRole  R&D 这两行  前面的注释符号.
  •   这里是设置 远程登录的账号和密码。比如默认的 账号是 monitorRole 和controlRole,其对应的密码分别是 QED和 R&D;可以自定义用户名密码,我自  定义了一个账号密码都为 root的账号。如图:

    java自带的监控工具VisualVM(二)远程监控

  •   同时需要修改 当前目录里的jmxremote.access 文件,该文件可以控制访问权限;如图:

    java自带的监控工具VisualVM(二)远程监控

  2.修改远程机器上需要被监控的程序的配置文件 (我这里是监控Tomcat容器内部署的应用).

   修改TOMCAT_HOME/bin/catalian.sh文件;

    在第一行加入如下语句:

    export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"

    ps: 我需要监控的tomcat机子ip为 192.168.2.120;监控端口设置为:18999;远程认证设置(默认)为true;

      当时就因为很多资料上没有 将JAVA_OPTS变量 export,导致失败了多次。

    详细的参数见下面:    

 参数 描述
com.sun.management.jmxremote true / false. Default is true
com.sun.management.jmxremote.port Port number. No default.
com.sun.management.jmxremote.ssl true / false. Default is true.
com.sun.management.jmxremote.ssl.enabled.protocols Default SSL/TLS protocol version.
com.sun.management.jmxremote.ssl.enabled.cipher.suites Default SSL/TLS cipher suites.
com.sun.management.jmxremote.ssl.need.client.auth true / false. Default is false
com.sun.management.jmxremote.authenticate true / false.Default is true
com.sun.management.jmxremote.password.file JRE_HOME/lib/management/jmxremote.password
com.sun.management.jmxremote.access.file JRE_HOME/lib/management/jmxremote.access
com.sun.management.jmxremote.login.config Default login configuration is a file-based password authentication
  3.重启tomcat,让配置生效。

  ps: 可以用 netstat -anp| grep 18999 ,查看守护线程是否已经启动!如图:

    java自带的监控工具VisualVM(二)远程监控

  4.VisualVM配置。
  •   打开你本机命令框,输入jvisualvm,点击这个EXE文件;或者进入JAVA_HOME\bin\目录下面点击也可以!

java自带的监控工具VisualVM(二)远程监控

java自带的监控工具VisualVM(二)远程监控

  •   右击远程,点击添加远程主机:

    java自带的监控工具VisualVM(二)远程监控

  •   右击 192.168.2.120(远程主机),添加一个JMX链接,如图:

    java自带的监控工具VisualVM(二)远程监控

  • 登录后状态:  

  java自带的监控工具VisualVM(二)远程监控

ps:

不需要账号密码登录的,设置:-Dcom.sun.management.jmxremote.authenticate=false 即可。

export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 如图:

java自带的监控工具VisualVM(二)远程监控

输入端口,直接点击确定,即可登录!

java自带的监控工具VisualVM(二)远程监控

java自带的监控工具VisualVM(二)远程监控

ok!后面的可以参考 java自带的监控工具VisualVM一,来监控学习了!

    

Jstatd方法:(略)还没有试过!

参考文件:

https://segmentfault.com/a/1190000004313468

http://blog.csdn.net/lijiecong/article/details/6882267

http://blog.csdn.net/wzyzzu/article/details/50380511