Tomcat开启JMX监控
搭建模拟环境:
操作系统:centos7
内存:1G
jdk:1.8.0_131
tomcat:8.0.48
环境准备我们这里就不直接演示了,直接配置tomcat的jmx
1、进入到tomcat的bin目录下
# cd /opt/tomcat/apache-tomcat-8.0.48/bin/
2、编辑配置文件
# vim catalina.sh
3、在下图中上面添加参数
参数添加后的样子
3.1、此配置连接jmx不需要账号密码:
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.100.117
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
配置后的截图:
参数说明:
hostname:是监控tomcat所在服务器的ip地址
jmxremote.port:端口号,是要开启的监控端口号
jmxremote.ssl:是否要开启ssl连接
authenticate: false表示监控不需要用户和密码
3.2、需要配置用户名、密码:
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.100.117
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
配置后的截图:
参数说明:
authenticate:为true开启账号验证
access.file:权限文件路径
password.file:密码文件路径
3.3、当没有配置密码验证的时候,不需要此步操作,当启用用户、密码验证后需要操作此步骤
3.3.1、找到jdk安装目录
如果不知道安装到目录那个地方可以通过命令查找:
# java -verbose
3.3.2、切换到jdk目录中
进入# cd jre/lib/management/
在文件目录下会有jmxremote.access jmxremote.password.template文件,拷贝到tomcat的conf目录下
# cp jmxremote.* /opt/tomcat/apache-tomcat-8.0.48/conf/
3.3.3、修改jmxremote.access文件
3.3.4、重命名密码文件:
# mv jmxremote.password.template jmxremote.password
3.3.5、编辑密码文件
# vim jmxremote.password
3.3.6、编辑完文件后,要修改access文件和password文件权限,不然tomcat启动不起来
# chmod 600 jmxremote.*
4、启动tomcat
[root@ha bin]# ./startup.sh
Using CATALINA_BASE: /opt/tomcat/apache-tomcat-8.0.48
Using CATALINA_HOME: /opt/tomcat/apache-tomcat-8.0.48
Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-8.0.48/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat/apache-tomcat-8.0.48/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.0.48/bin/tomcat-juli.jar
Tomcat started.
4.1、做完上面操作,使用jdk自带的jvisualvm.exe连接,可以在windows下测试
双击打开jmx连接
4.2、重启tomcat,测试jmx是否还可以连接上
# ./shutdown.sh
4.2.1、再次连接jmx查看是否可以连接上
数据监控图都查看不了,连接不上
为什会出现这个问题?
网上给出的结论是:
tomcat的jmx远程健康是需要两个端口,一个是注册端口,一个是服务端口,之前配置指定的9999端口是注册端口,tomcat在启动的时候会随机指定一个服务端口,由于我们注册端口只有一个,所以在重启服务后,注册端口没有变化,服务端口已经变了,再次通过注册端口连接已经连接不上之前的服务端口了,没有办法指定服务端连接,服务端口是随机的。
有一种方法是设置jmx固定的注册端口和服务端口,通过jar包实现
5、登录tomcat官网(注意,我的tomcat版本是1.8.0的官网上只有1.8.5的也可以使用)
根据自己的tomcat版本找到JMX Remote jar
6、把下载下来的上传到tomcta的lib目录下
获取jar包的连接也可以直接wget到lib目录下
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/extras/catalina-jmx-remote.jar
7、编辑tomcat的conf目录下的server.xml文件
# vim server.xml
添加下面内容:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
8、编辑tomcat的bin目录下catalina.sh
# vim catalina.sh
删除参数:
-Dcom.sun.management.jmxremote.port=9999
9、重启tomcat测试,jmx注册端口为10001,服务端口为10002
10、重启tomcat再次连接测试
当我们双击之前创建的jmx远程连接的时候会发现也连接不上,这是为什么呢,这里我们要注意上面连接中的pid号,经过查询,我们发现这个pid号就是linux中tomcat的pid号,当我们重启tomcat后,会产生新的pid号,所以我们想要连接就要新建一个连接
11、我们再次新建jmx连接的时候会获取新的pid号
12、到这里我们就测试成功了,这样在我们使用zabbix使用jmx监控tomcat的时候就不用担心tomcat重启jmx端口连接不上了
Tomcat开启JMX监控的更多相关文章
- Tomcat开启JMX监控 visualvm
Tomcat开启JMX监控 https://blog.csdn.net/dongdong2980/article/details/78476393
- zabbix监控tomcat(使用jmx监控,但不使用系统自带模版)
一,zabbx使用jmx监控tomcat的原理分析 1.Zabbix-Server找Zabbix-Java-Gateway获取Java数据 2.Zabbix-Java-Gateway找Java程序(j ...
- 服务器开启JMX监控
JMX是一个框架,提供了一种功能,可以实时查询应用程序中通过JMX向外部公布的相应参数或者是其他应用程序,同时也可以通过JMX来实时地调用应用程序使用JMX向外部公布的接口,来完成一些功能操作. 如果 ...
- Tomcat java zabbix 监控
排除汤姆猫错误的步骤 ps-ef | grep java或jps –lvm 查看java pid进程 netstat –lntup | grep java 查看java 端口有没有启动 查看 tomc ...
- Tomcat调优及JMX监控
Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 ( ...
- zabbix通过jmx监控tomcat
Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功. 2. ...
- Linux记录-JMX监控Tomcat上传到falcon
1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...
- zabbix 部署 jmx 监控tomcat
zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...
- 性能测试之监控--zabbix通过jmx监控tomcat
前提: 已经安装好了zabbix server 实验环境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安装JDK tar -zxvf jdk-8u181-linux- ...
随机推荐
- 2020你还不会Java8新特性?
Java8(1)新特性介绍及Lambda表达式 前言: 跟大娃一块看,把原来的电脑拿出来放中间看视频用 --- 以后会有的课程 难度 深入Java 8 难度1 并发与netty 难度3 JVM 难度4 ...
- Codeforces 1197E Count The Rectangles(树状数组+扫描线)
题意: 给你n条平行于坐标轴的线,问你能组成多少个矩形,坐标绝对值均小于5000 保证线之间不会重合或者退化 思路: 从下到上扫描每一条纵坐标为y的水平的线,然后扫描所有竖直的线并标记与它相交的线,保 ...
- 杂记 -- 关于vue-router样式、vuecli引用全局js函数、vue.slot用法
1.routerLinkTo 样式设置 首先,点击routerlink标签如下图:添加:router-link-active,router-link-exact-active两个类的样式 router ...
- 如何高效地远程部署?自动化运维利器 Fabric 教程
关于 Python 自动化的话题,在上一篇文章中,我介绍了 Invoke 库,它是 Fabric 的最重要组件之一.Fabric 也是一个被广泛应用的自动化工具库,是不得不提的自动化运维利器,所以,本 ...
- 转:JSON与Map互转
JSON字符串与Map互转 //一.map转为json字符串 public static String map2jsonstr(Map<String,?> map){ return J ...
- Chrome恢复显示网址 https:// 和 www
文章来自我的博客: https://blog.ljyngup.com/archives/686.html/ Chrome这个新规弄得我也很蛋疼,每次一点输入框就突然突出来一下.后来在Hostloc论坛 ...
- 总结JavaScript对象的深浅拷贝
十四.对象的浅拷贝与深拷贝 什么是对象的拷贝? 将一个对象赋值给另外一个对象, 我们称之为对象的拷贝 什么是深拷贝, 什么是浅拷贝? 我们假设将A对象赋值给B对象 浅拷贝是指, 修改B对象的属性和方法 ...
- C#在窗体中按下鼠标键拖动窗体
[DllImport("user32.dll")]//拖动无窗体的控件 public static extern bool ReleaseCapture(); [DllImport ...
- Spring整合EasyExcel【基础设计】
前言 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI ...
- k8s系列---资源指标API及自定义指标API
不得不说千万不要随意更改版本,我用的1.13的版本,然后学到这一步时,还因yaml文件不同,卡住了很久,然后各种google才找到解决办法 https://www.linuxea.com/2112. ...