VisualVM监控远程阿里云主机
程序员文章站
2022-04-08 16:56:44
一、前言 使用VisualVM监控远程主机,主要是要在远程主机上部署JMX服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的)。 二、环境 1.客户端 JDK1.8 2.服务端 JDK1.8 阿里云主机,CentOS7 公网I ......
一、前言
使用visualvm监控远程主机,主要是要在远程主机上部署jmx服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的)。
二、环境
1.客户端
jdk1.8
2.服务端
jdk1.8
阿里云主机,centos7
公网ip:37.19.213.44 私有ip:192.168.0.58 (这两个网络很重要)
确定服务器的主机名和ip是对应的,如下:
1 hostname -i 2 3 # 如果匹配的结果是无法识别或者127.0.0.1, 则需要手动配置主机名和ip映射,假设主机名是alibaba 4 5 vim /etc/hosts 6 # 添加一行。记住这里填的是私有ip,不能是公有ip,不能是公有ip,否则你会被坑得连自己姓什么都不知道。 一般默认会有一条这样的记录 7 192.168.0.58 alibaba
三、修改服务器配置
1.修改catalina.sh文件
进入tomcat中的bin目录,修改catalina.sh文件
1 cd /usr/local/tomcat/apache-tomcat-7.0.93/bin/ 2 vim catalina.sh 3 # 添加如下配置: 4 catalina_opts="$catalina_opts -dcom.sun.management.jmxremote.ssl=false 5 -dcom.sun.management.jmxremote.authenticate=false 6 -dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password 7 -dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access 8 -djava.rmi.server.hostname=37.19.213.44"
配置参数说明:
# -dcom.sun.management.jmxremote.ssl 是否开启ssl传输,设为false即可 # -dcom.sun.management.jmxremote.authenticate 是否校验,设为false即可 # -dcom.sun.management.jmxremote.password.file 远程登录的账号、密码管理文件,下文会讲到如何获取 # -dcom.sun.management.jmxremote.access.file 远程登录的账号权限管理文件,下文会讲到如何获取
# -djava.rmi.server.hostname 这个很重要,如果不填的话,可以重启成功,按时客户端的jvisual是无法远程连接上的,这里的ip必须是公网ip,公网ip
配置截图:
2.添加jmx的端口监听
进入tomcat中的conf目录,修改server.xml文件。添加如下的监听配置。其中10001和10002是自定义的两个端口,用于远程连接需要。
1 <!-- 远程监控 --> 2 <listener classname="org.apache.catalina.mbeans.jmxremotelifecyclelistener" rmiregistryportplatform="10001" rmiserverportplatform="10002" />
配置截图:
3.添加jmx的访问控制文件
# 进入tomcat/conf的目录 # 执行以下命令 # 复制jmxremote.password、jmxremote.access两个文件到conf目录 cp $java_home/jre/lib/management/jmxremote.password.template jmxremote.password cp $java_home/jre/lib/management/jmxremote.access jmxremote.access vi jmxremote.password # 取消下面两行的注释,取消注释表示你可以使用这两个账号进行远程登录 #monitorrole qed #controlrole r&d # 也可以自定义账号,格式如 username passwd,如我想要添加一个zexin的账号,密码是123 vim jmxremote.password # 在最后一行添加
# 格式为:账号 密码(中间用空格隔开) origin admin # 修改完jmxremote.password文件,还要修改jmxremote.access文件,添加权限 origin readwrite # 给予读写jmxremote.password、jmxremote.password文件的权限,如果没有读写的权限程序会抛异常 chmod 600 jmxremote.password chmod 600 jmxremote.access
4.添加catalina-jmx-remote.jar
这里需要注意,可能会出现版本冲突的问题。我下载的7.0的版本,下载后copy到tomcat/lib目录
5.配置防火墙
阿里云:把10001、10002这两个端口加入到安全组
本地虚拟机:修改防火墙配置文件
1 vi /etc/sysconfig/iptables 2 -a input -p tcp -m state --state new -m tcp --dport 10001 -j accept 3 -a input -p tcp -m state --state new -m tcp --dport 10002 -j accept
1 # 重启防火墙 2 service iptables restart
然后 重启tomcat
四、本地开启远程监控(测试)
添加远程主机:
添加jmx连接:
成功连接:
gc不受此jvm支持:
我找的很多都没有得到解决。
五、插件安装
注意:由于java.net网站已关闭,无法在线安装插件。visualvm已经迁移到了github上,地址是
点击plugins进入插件页面
找到对应的jdk版本地址点击进去,例如:java version "1.8.0_201"
选择你要安装的插件下载:
打开jvisualvm选择:工具 ——> 插件 ——> 已下载 ——> 添加插件 ——> 选择下载好的插件