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 ...
随机推荐
- 测试使用Timer定时调用http接口
转自:https://blog.csdn.net/qq_36004521/article/details/80101881
- Spring讲解-----------表达式语言
转自:https://blog.csdn.net/u011225629/article/details/47143083 5.1 概述5.1.1 概述 Spring表达式语言全称为“S ...
- VSCode中Markdown目录显示异常
更新最新的VSCode之后编辑Markdown文件发现TOC标签的目录格式异常,发现是因为行尾字符导致,必须设置行尾字符进行解决.
- shell中sed的简单使用
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式.在一 ...
- 如何在cmd命令行中运行Java程序
cmd运行java 有萌新问我怎么用cmd运行Java,他运行报错了,怎么办?如图是他的执行过程: 他说就这一个类,里面包含了main方法怎么会没有加载主类呢. 其实很简单,因为你执行的时候并不能直接 ...
- 03-【request对象获取请求的数据 & request对象存取值】
request概述(封装了客户端所有的请求数据) request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest.在 ...
- PXC集群的概述及搭建
目录 PXC集群的概述及搭建 PXC集群的简介 PXC集群主要由两部分组成: PXC的特性和优点: PXC的局限和劣势: PXC原理描述 在Centos部署基于Mysql高可用方案操作过程 新增节点加 ...
- Hadoop_07_HDFS的Java API 操作
通过Java API来访问HDFS 1.Windows上配置环境变量 解压Hadoop,然后把Hadoop的根目录配置到HADOOP_HOME环境变量里面 然后把HADOOP_HOME/lib和HAD ...
- 1. LVS概述
1.LVS介绍 LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能 2.LVS组成 LVS由2 ...
- PAT1005 继续(3n+1)猜想
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...