如果本地安装了JDK,则在${java.home}/bin/下可找到jvisualvm.exe,双击打开即可使用。否则,去官网下载一个,解压即可使用。现有一个springboot程序springbootdemo.jar,使用JDK中jvisualvm的JMX方式监控该JVM

一、查询hostname

二、检查hostname对应ip地址

下面是新装虚拟机hostname对应ip地址

三、查询当前机器供外网访问的ip地址

本机ip地址为192.168.102.31

 四、将hostname对应ip地址添加到/etc/hosts文件中

vim /etc/hosts

添加

192.168.102.31 localhost.localdomain

五、设置JMX连接用户名密码

1、进入到${jre.home}/lib/management下

cp -r jmxremote.password.template jmxremote.password

2、打开jmxremote.password,修改,添加用户或密码,建议不要使用默认的用户名和密码登录

monitorRole
jmxuser
newuser

3、打开jmxremote.access,修改新加/修改的用户权限

monitorRole   readonly
jmxuser readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister
newuser readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister

4、设置权限

chmod 0400 jmxremote.password

如果不设置权限,可能出现如下异常

Password file read access must be restricted: /usr/java/jdk1.8.0_162/jre/lib/management/jmxremote.password

六、启动springboot程序

springbootdemo启动脚本如下,JMX server主监听端口号设置为1566

#!/bin/bash

cd `dirname $`
/usr/java/jdk1..0_162/bin/java -jar -Djava.rmi.server.hostname=192.168.102.31 -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Xms100m -Xmx100m springbootdemo.jar &

七、开放端口

如果防火墙处于关闭状态,则这一步跳过,否则按照如下步骤操作

1、查询当前进程pid

ps -ef | grep springbootdemo

2、查询该java程序监听的端口

lsof -i | grep 

3、在防火墙中打开所需端口(1566/44518/56989)

需要注意的是,除了JMX监听端口号1566是固定之外,每次启动,另外两个监听端口号都会发生变化,可以使用脚本在启动后获取到另外两个端口,添加到防火墙中,并且移除上一次启动时监听的随机端口

firewall-cmd --permanent --add-port=/tcp
firewall-cmd --permanent --add-port=/tcp
firewall-cmd --permanent --add-port=/tcp

4、重启防火墙使之生效

systemctl restart firewalld.service

5、查看端口开放结果,确认设置成功

firewall-cmd --list-all

八、VisualVM连接该JVM

1、VisualVM打开后,右键远程 -- 》添加运城主机,输入ip地址,确定

2、在刚添加的主机上,右键选择添加JMX连接,输入端口号

点击确定,安全凭证弹出框中输入用户名密码

点击确定,会提示无法以SSL方式,连接到XXX,用户名和密码将以纯文本发送,这个先不管,后续再通过ssl连接,点击是,可以发现在左侧主机下多出一列

双击打开

配置结束

附:防火墙出于开启状态时,在firewall中自动开放监听端口

#!/bin/bash

cd `dirname $`
java -jar -Djava.rmi.server.hostname=192.168.102.31 -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Xms100m -Xmx100m springbootdemo.jar & declare -a arr
firewall-cmd --permanent --add-port=/tcp
runflag="`systemctl status firewalld | grep running`"
if [ "$runflag" != "" ];then
if [ -f ./random_listen_port_file ];then
for old_random_listen_port in `cat ./random_listen_port_file`;do
firewall-cmd --permanent --remove-port=$old_random_listen_port/tcp
done
rm -rf ./random_listen_port_file
fi
## firewall is running
pid="`ps -ef | grep springbootdemo.jar | grep -v grep | awk '{print $2}'`"
if [ "$pid" != "" ];then
while true;do
arr=`lsof -i | grep $pid | grep LISTEN |awk '{print $9}' | cut -d ':' -f2`
len=`lsof -i | grep $pid | grep LISTEN |awk '{print $9}' | cut -d ':' -f2 | wc -l`
if [ "$len" != "" ];then
sleep 1s
else
break
fi
done
## program is running
for random_listen_port in $arr;do
echo $random_listen_port | grep -q '[^0-9]'
if [ $? -eq ];then
echo $random_listen_port >> ./random_listen_port_file
firewall-cmd --permanent --add-port=$random_listen_port/tcp
fi
done
fi
systemctl restart firewalld.service
fi

VisualVM通过密码JMX远程连接JVM的更多相关文章

  1. JMX远程连接JVM

    -Dcom.sun.management.jmxremote :允许使用JMX远程管理 -Dcom.sun.management.jmxremote.port=9999 :JMX远程连接端口 -Dco ...

  2. VisualVM通过ssl远程连接JVM

    VisualVM通过密码连接JVM实例如下 https://www.cnblogs.com/qq931399960/p/10960573.html 虽然设置了密码,但还是不够安全,只要获取到密码,在任 ...

  3. JMX远程监控JVM

    远程监控JVM状态需要在JVM启动的时候需要加上一段代码开启这个功能.(以下全部以ubuntu-14-04-server.jdk1.8.tomcat7.0环境为基础) 配置的时候分两种情况:1.无需配 ...

  4. MySql数据库安装&修改密码&开启远程连接图解

    相关工具下载地址: mysql5.6 链接:http://pan.baidu.com/s/1o8ybn4I密码:aim1 SQLyog-12.0.8 链接:http://pan.baidu.com/s ...

  5. MySQL重置密码与远程连接权限问题

    如果mysql没有密码,或者密码设置为空的时候可以通过在用管理员身份打开cmd,然后在里面输入mysqladmin -u root password 123456  这个地方的密码是明文密码. 如果忘 ...

  6. mysql8.0 安装 修改密码 允许远程连接

    转自:https://www.cnblogs.com/xyabk/p/8967990.html mysql从5.7一下子跳跃到了8.0,其中的改变还是很大,有点这里就不说了,小伙伴们自己去百度了解一下 ...

  7. 【监控】jvisualvm之jmx远程连接 tomcat war启动应用

    一.tomcat相应jmx配置 1.在tomcat bin目录下的catalina.sh文件中添加如下配置: CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun. ...

  8. mysql 5.7 修改root密码允许远程连接

    1.修改root密码(其他用户类似)  试过网上看的一些 在mysql数据库执行 update user set password='新密码'  where user='root' 执行说找不到字段, ...

  9. Centos tomcat jmx 远程连接

    jmx配置: -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.mana ...

随机推荐

  1. 价值19.9元 <问药师 - 儿童维生素D的补充> 总结

    1岁以上的婴幼儿(一直到18岁), 每天应该补充维生素D 400-800UI, 这其中应包含当天的晒太阳时间. 1岁以下400UI户外晒太阳时间, 夏季30分钟, 冬季2小时, 再根据实际情况加减每天 ...

  2. Python 之 random模块

    Python中的random模块用于生成随机数.1.random.random()  #用于生成一个0到1的随机浮点数:0<= n < 1.0>>> random.ran ...

  3. 【2017-04-10】js来控制导航栏在滚动条拉到一定位置时显示

    <html> <head> <title>test</title> </head> <body> <div style=& ...

  4. BLE 5协议栈-链路层

    文章转载自:http://www.sunyouqun.com/2017/04/page/3/ 链路层LL(Link Layer)是协议栈中最重要的一层. 链路层的核心是状态机,包含广播.扫描.发起和连 ...

  5. C# 图像基本处理

    使用第三方:AForge实现视频采集(实现视频采集.暂停) 实现图片的常用处理功能:旋转.反色.灰度.放大.缩小.模糊.拉伸.增强.锐化.裁剪...... 实现对图片进行文字编辑......

  6. Vim技巧----光标移动

    w:向前移动,光标停留在下个单词词首,每次一个单词(单词中不含其他字符如:- \ = +等) W:向前移动,光标停留在下个单词词首,每次一个字符串(字符串可以含有其字符如:- \ = +等,is-a ...

  7. Redis05——Redis高级运用(管道连接,发布订阅,布隆过滤器)

    Redis高级运用 一.管道连接redis(一次发送多个命令,节省往返时间) 1.安装nc yum install nc -y 2.通过nc连接redis nc localhost 6379 3.通过 ...

  8. java 实现链表

    public class MyList { Entry head; class Entry { Object data; Entry next; public Entry(Object data) { ...

  9. HDFS知识点

    1.通过代码验证集群的配置文件的优先级 HDFS文件上传 1.编写源代码 @Test public void testCopyFromLocalFile() throws IOException, I ...

  10. CodeForces 788B - Weird journey [ 分类讨论 ] [ 欧拉通路 ]

    题意: 给出无向图. good way : 仅有两条边只经过一次,余下边全经过两次的路 问你共有多少条不同的good way. 两条good way不同仅当它们所经过的边的集合中至少有一条不同 (很关 ...