用于监控远程环境Jvm的运行情况
一. 首先在服务器终端设置环境变量,主要是便于每次启动项目时使用:
-
在/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
配置完成后截图: -
设置环境变量后,用命令重新加载配置文件:source /etc/profile
-
参数解析:
- 配置远程调用主机地址,即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