VisualVM监控远程阿里云主机

匿名 (未验证) 提交于 2019-12-02 21:35:18

一、前言

使用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目录

catalina-jmx-remote.jar下载地址

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上,地址是https://visualvm.github.io/index.html

点击Plugins进入插件页面

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!