Springboot使用jconsole远程监控JVM

用于监控远程环境Jvm的运行情况

一. 首先在服务器终端设置环境变量,主要是便于每次启动项目时使用:

  1. 在/etc/profile文件的最后加上以下代码

    export JAVA_OPTS='-Djava.rmi.server.hostname=服务器地址(公网ip) -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8617 -Dcom.sun.management.jmxremote.rmi.port=8617 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false'

    使用到的相关命令:
    vim profile
    编辑指令 i
    保存并退出指令 :wq
    配置完成后截图:

  2. 设置环境变量后,用命令重新加载配置文件:source /etc/profile

  3. 参数解析:

  • 配置远程调用主机地址,即jar包运行所在系统的IP地址,不配置则默认使用hosts文件中的值:-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8617
  • 指定JMX的运行端口,jconsole需要对接的既是该端口:-Dcom.sun.management.jmxremote.rmi.port=8617
  • 是否需要进行身份验证:-Dcom.sun.management.jmxremote.authenticate=true
  • 是否允许使用ssl方式接入:-Dcom.sun.management.jmxremote.ssl=false

   注:一步骤只是为了设置统一环境变量,便于jar包启动时同时启动jmx(jconsole)的相关ip,端口,连接账号,密码信息

 

二. jmx的账号密码的设置

  • 切换到服务器jvm的配置路径(路径不确定可以在/etc/profile统一环境变量中找)

以下是我的jvm的配置路径:

  • 配置jmx的账号密码:

切换到你服务器的jvm配置路径:cd /usr/lib/jvm/java-1.8.0-openjdk.x86_64/

拷贝jmxremote.password.template文件到jmxremote.pwssword:

sudo cp jmxremote.password.template jmxremote.password

给jmxremote.password文件添加读写权限

sudo chmod 666 jmxremote.password

修改jmxremote.password文件,取消最后两行的注释,保存退出.

注:再将权限修改为只读(有点坑,我开始没有这一步骤,导致jconsole远程连接失败):

chmod 400 jmxremote.password

这里默认的用户有monitorRole和controlRole,对应的密码分别是QED和R&D

注意:这里的monitorRole只有读权限,而controlRole有读写权限

启动项目进行测试(jar包后台运行):

java $JAVA_OPTS -jar onecard-2.2.0.jar &

三.使用jconsole远程连接:

 

 

 

注:查看指定端口监听状态:

sudo netstat -apn | grep java

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章