VisualVM监控远程阿里云主机
一、前言
使用VisualVM监控远程主机,主要是要在远程主机上部署JMX服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的)。
二、环境
1.客户端
JDK1.8
2.服务端
JDK1.8
阿里云主机,CentOS7
公网IP:37.19.213.44 私有IP:192.168.0.58 (这两个网络很重要)
确定服务器的主机名和IP是对应的,如下:
hostname -i # 如果匹配的结果是无法识别或者127.0.0.1, 则需要手动配置主机名和IP映射,假设主机名是alibaba vim /etc/hosts
# 添加一行。记住这里填的是私有IP,不能是公有IP,不能是公有IP,否则你会被坑得连自己姓什么都不知道。 一般默认会有一条这样的记录
192.168.0.58 alibaba
三、修改服务器配置
1.修改catalina.sh文件
进入tomcat中的bin目录,修改catalina.sh文件
cd /usr/local/tomcat/apache-tomcat-7.0.93/bin/
vim catalina.sh
# 添加如下配置:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access
-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是自定义的两个端口,用于远程连接需要。
<!-- 远程监控 -->
<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这两个端口加入到安全组

本地虚拟机:修改防火墙配置文件
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10002 -j ACCEPT
# 重启防火墙
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"

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

打开jvisualvm选择:工具 ——> 插件 ——> 已下载 ——> 添加插件 ——> 选择下载好的插件
VisualVM监控远程阿里云主机的更多相关文章
- Jconsole或者VisualVM监控远程主机(阿里云,jdk11或者8)
准备: 1 一个war包或者jar包,这里我用springboot的 2 linux环境,安装tomcat,jdk,我用的jdk11和tomcat9,jdk11和8的拷贝权限文件路径有点不一样,这个需 ...
- 使用jvisualvm远程监控tomcat(阿里云ECS)
写在前面: 使用jvisualvm远程监控tomcat(阿里云ECS),连接是报错:service:jmx:rmi:////jndi/rmi:IP:端口// 连接到 IP:端口,网上找了很多资料, ...
- 阿里云主机CentOS7设置远程连接MySQL数据库
有一个困扰了我好久的问题,今天终于解决了. 看网上的答案只有一部分.今天把完整的发篇博客纪念一下下. 首先,连接阿里云主机并登录数据库, 1.添加一个Host mysql>select User ...
- 放弃阿里云主机,选择高性价比Vultr VPS免备案
阿里云主机ECS推广多年后,质量有所改善,但我依然强烈不推荐阿里云主机.考虑性价比带宽速度等因素后,我推荐的vps品牌有vultr和digitalocean,还有大名鼎鼎的linode,是中国用户的最 ...
- 阿里云主机Nginx下配置NodeJS、Express和Forever
https://cnodejs.org/topic/5059ce39fd37ea6b2f07e1a3 AngularJS中文社区即运行在阿里云主机上,本站使用Nginx引擎,为了AngularJS,我 ...
- 免费网站监控服务阿里云监控,DNSPod监控,监控宝,360云监控使用对比
网站会因为各种原因而导致宕机,具体表现为服务器没有响应,用户打不开网页,域名解析出错,搜索引擎抓取页面失败,返回各种HTTP错误代码.网站宕机可能带来搜索引擎的惩罚,网站服务器不稳定与百度关系文章中就 ...
- 远程连接云主机MySql数据库
笔者最近在学习MySql数据库,试着远程连接阿里云主机数据库.在连接过程中遇到不少麻烦,这里总结一下过程中遇到的问题. 基本前提 先在本地电脑和远程主机上安装MySql数据库,保证数据库服务启动. 云 ...
- 阿里云主机windows系统Apache启用浏览器缓存的方法
一群友使用卡卡网的网站速度诊断工具诊断网站速度时,发现有几个需要优化的地方,其中较为重要的是“启用浏览器缓存”.诊断结果显示,网站尚未启用浏览器缓存. 图一:浏览器缓存未启用 群友找我帮忙设置一下,据 ...
- 阿里云主机(aliyun-Linux) x64安装Redis详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/97.html?1455870336 如何在Linux上安装Redis呢, ...
随机推荐
- 第七章 ReentrantLock总结
常用方式: int a = 12; //注意:通常情况下,这个会设置成一个类变量,比如说Segement中的段锁与copyOnWriteArrayList中的全局锁 final ReentrantLo ...
- Java中的String,StringBuilder,StringBuffer的区别
这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > ...
- 对于equals和==的理解
很多时候equals和==大家都分不太清楚怎么样来使用,今天小编就来教大家怎么使用 equals比较的是两个变量的值是否相等 而==则比较的是这个变量的内存地址是否相同 打个比方来说 String a ...
- celery_消息队列
http://www.cnblogs.com/wupeiqi/articles/8796552.html 一. celery 简介 Celery 是一个专注于实时处理和任务调度的分布式任务队列, 同时 ...
- django 获取request请求对象及response响应对象中的各种属性值
django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...
- Jmeter 多台机器产生负载及问题解决方法
JMeter 使用多台机器产生负载的操作步骤如下: 关于linux环境运行jmeter,分布式测试 见 http://www.51testing.com/html/55/383255-847895.h ...
- python多态和鸭子类型
多态与多态性 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承). 比如:文件分为文本文件,可执行文件(在定义角度) 比如 我们按下 F1 键这个动作: 如果当前在 Fl ...
- 使用python+selenium对web进行自动化测试
想用python代码,对web网页进行自动化测试 web自动化测试和手动测试的区别: 手动测试:通过手动去对网页的功能进行点点点 web自动化:可以通过代码,自动对网页点点点 首先,将python+s ...
- windows 安装openssl
参考文章:http://www.cnblogs.com/tangxin-blog/p/5724071.html 准备条件: 1.VS2012 (携带c++) 2.下载openssl 源码 3.安装Pe ...
- PL/SQL DEVELOPER数字超长显示了科学计数法
问题: 最近在做项目中,ID使用了长整形,10进制数值大约长度17位,在pl/sql developer 上数值由科学计数法显示. 在查看时不是很方便,且数值进行了省略显示,不准确. 解决方法: 在t ...