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- ...
随机推荐
- How to make as map two or more device located in the same media pool by using ddboost + nw
How to make as map two or more device located in the same media pool by using ddboost + nw ? That is ...
- Shiro过滤器
Shiro内置过滤器 anon.authBasic.authc.user.logout perms.roles.ssl.port spring.xml <bean id="shiroF ...
- mybatis级联查询,多对一查询问题
在使用Mybatis进行多表级联查询时遇到了一个问题:查询结果只有一项,但正确结果是两项.经测试,SQL语句本身没有问题. 在SQL映射文件(XML)中: <!-- 级联查询数据 --> ...
- 一起了解 .Net Foundation 项目 No.2
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. ASP.NET MVC, ...
- 使用Java8 Files类读写文件
Java8 Files类的newBufferedReader()和newBufferedWriter()方法 这两个方法接受Path类型的参数.Path 类是Java8 NIO中的接口.可以由Path ...
- 使用Unicode(宽字节字符集);多字节字符集中定义宽字节变量
2012-03-25 14:54 (分类:计算机程序) 2.2 宽字符和C 宽字符不一定是Unicode.Unicode是宽字符集的一种.然而,因为本书的焦点是Windows而不是C执行的理论,所以书 ...
- 连接数据库的方法---ODBC
2012-12-10 11:50 (分类:计算机程序) 技术博客,对抗遗忘…… 1.ODBC Open Database Connectivity 1.1 简介:提供了一组对数据库访问的标准 ...
- Mysql 导入导出备份
恢复MySQL服务器上面的txt格式文件(需要FILE权限,各数据值之间用"制表符"分隔) 1.导入数据库服务器上的txt文件 mysql>load data infil ...
- Linux ftp VSftp
一.Linux FTP服务器分类: <1>wu-ftp <2>proftp=profession ftp <3>vsftp=very security ftp 本 ...
- Samba搭建Linux和Windows文件共享服务
一.Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享 ...