VisualVM通过密码JMX远程连接JVM
如果本地安装了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的更多相关文章
- JMX远程连接JVM
-Dcom.sun.management.jmxremote :允许使用JMX远程管理 -Dcom.sun.management.jmxremote.port=9999 :JMX远程连接端口 -Dco ...
- VisualVM通过ssl远程连接JVM
VisualVM通过密码连接JVM实例如下 https://www.cnblogs.com/qq931399960/p/10960573.html 虽然设置了密码,但还是不够安全,只要获取到密码,在任 ...
- JMX远程监控JVM
远程监控JVM状态需要在JVM启动的时候需要加上一段代码开启这个功能.(以下全部以ubuntu-14-04-server.jdk1.8.tomcat7.0环境为基础) 配置的时候分两种情况:1.无需配 ...
- MySql数据库安装&修改密码&开启远程连接图解
相关工具下载地址: mysql5.6 链接:http://pan.baidu.com/s/1o8ybn4I密码:aim1 SQLyog-12.0.8 链接:http://pan.baidu.com/s ...
- MySQL重置密码与远程连接权限问题
如果mysql没有密码,或者密码设置为空的时候可以通过在用管理员身份打开cmd,然后在里面输入mysqladmin -u root password 123456 这个地方的密码是明文密码. 如果忘 ...
- mysql8.0 安装 修改密码 允许远程连接
转自:https://www.cnblogs.com/xyabk/p/8967990.html mysql从5.7一下子跳跃到了8.0,其中的改变还是很大,有点这里就不说了,小伙伴们自己去百度了解一下 ...
- 【监控】jvisualvm之jmx远程连接 tomcat war启动应用
一.tomcat相应jmx配置 1.在tomcat bin目录下的catalina.sh文件中添加如下配置: CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun. ...
- mysql 5.7 修改root密码允许远程连接
1.修改root密码(其他用户类似) 试过网上看的一些 在mysql数据库执行 update user set password='新密码' where user='root' 执行说找不到字段, ...
- Centos tomcat jmx 远程连接
jmx配置: -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.mana ...
随机推荐
- Java高并发程序设计学习笔记(十一):Jetty分析
转自:https://blog.csdn.net/dataiyangu/article/details/87894253 new Server()初始化线程池QueuedThreadPoolexecu ...
- mybatis批量更新表setting parameters 错误
mybatis中想用 foreach标签 批量update set表 下面是mapper.xml <update id="updateMonitorById" paramet ...
- 关于IDEA导入依赖问题,阿里云下载不了
关于阿里云,有部分数据是不能够下载的,就拿ojdbc8-12.2.0.1.0.jar来说 pom.xml <!--Oracle驱动 因为maven仓库下载不了,采用本地导入--> < ...
- 第十二章·Kibana深入-日志图形展示
1.Kibana创建区域图 Kibana支持多重图从展示功能,需要日志是json格式的支持. Kibana区域图 打开浏览器,访问:http://10.0.0.54:5601   选择一个日志  ...
- LeetCode NO477.汉明距离总和
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量. 计算一个数组中,任意两个数之间汉明距离的总和. 示例: 输入: 4, 14, 2 输出: 6 解释: 在二进制表示中,4表示为010 ...
- unix/linux共享库(动态库)简介
一.创建共享库: 1.写源程序 xxx1.c xxx2.c.../*.c(通配符方式) 2.编译源程序,加-fpic生成.o文件 gcc -c -fpic xxx1.c xxx2.c.../*.c(通 ...
- python常用模块:sys、os、path、setting、random、shutil
今日内容讲了3个常用模块 一.sys模块二.os模块三.os下path模块四.random模块五.shutil模块 一.sys模块 import sys #环境变量 print(sys.path) # ...
- Android异常与性能优化相关面试问题-ANR异常面试问题详解
什么是ANR? Application Not Responding 造成ANR的主要原因: 应用程序的响应性是由ActivityManager和WindowManager系统服务监视的,当监视到在A ...
- SAP 选择屏幕的上方 (sscrfields) 按钮设置
TABLES sscrfields. PARAMETERS: p_carrid TYPE s_carr_id, p_cityfr TYPE s_from_cit. , "激活按钮 . INI ...
- (三) 结构化查询语言SQL——1
1. SQL概述 SQL,结构化查询语言,重要性不必在赘述了,基本上开发软件没有不用到的,此外在一些大数据也有广泛的应用.SQL主要包含数据定义语言(DDL).数据操纵语言(DML)以及数据控制语言( ...