欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

配置截图:

VisualVM监控远程阿里云主机

 

2.添加jmx的端口监听

进入tomcat中的conf目录,修改server.xml文件。添加如下的监听配置。其中10001和10002是自定义的两个端口,用于远程连接需要。

1 <!-- 远程监控 -->
2 <listener classname="org.apache.catalina.mbeans.jmxremotelifecyclelistener" rmiregistryportplatform="10001" rmiserverportplatform="10002" />

配置截图:

VisualVM监控远程阿里云主机

 

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这两个端口加入到安全组

VisualVM监控远程阿里云主机

本地虚拟机:修改防火墙配置文件

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

四、本地开启远程监控(测试)

添加远程主机:

 VisualVM监控远程阿里云主机

添加jmx连接:

VisualVM监控远程阿里云主机

 VisualVM监控远程阿里云主机

成功连接:

VisualVM监控远程阿里云主机

 

gc不受此jvm支持:

VisualVM监控远程阿里云主机

我找的很多都没有得到解决。

 

五、插件安装

注意:由于java.net网站已关闭,无法在线安装插件。visualvm已经迁移到了github上,地址是

点击plugins进入插件页面

VisualVM监控远程阿里云主机

找到对应的jdk版本地址点击进去,例如:java version "1.8.0_201"

VisualVM监控远程阿里云主机

选择你要安装的插件下载:

VisualVM监控远程阿里云主机

 

打开jvisualvm选择:工具 ——> 插件 ——> 已下载 ——> 添加插件 ——> 选择下载好的插件