阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Tomcat开启JMX监控详解

197次阅读
没有评论

共计 3660 个字符,预计需要花费 10 分钟才能阅读完成。

搭建模拟环境:
 操作系统: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、在下图中上面添加参数

Tomcat 开启 JMX 监控详解

  参数添加后的样子

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"

配置后的截图:

Tomcat 开启 JMX 监控详解

参数说明:

hostname:是监控 tomcat 所在服务器的 ip 地址

jmxremote.port:端口号,是要开启的监控端口号

jmxremote.ssl:是否要开启 ssl 连接

authenticate:false 表示监控不需要用户和密码

3.2、需要配置用户名、密码:
Tomcat 开启 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=true
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
Tomcat 开启 JMX 监控详解

配置后的截图:

Tomcat 开启 JMX 监控详解

    参数说明:

authenticate:为 true 开启账号验证

access.file:权限文件路径

password.file:密码文件路径

3.3、当没有配置密码验证的时候,不需要此步操作,当启用用户、密码验证后需要操作此步骤

3.3.1、找到 jdk 安装目录

如果不知道安装到目录那个地方可以通过命令查找:

# java -verbose

Tomcat 开启 JMX 监控详解

3.3.2、切换到 jdk 目录中

Tomcat 开启 JMX 监控详解

进入# 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 文件

Tomcat 开启 JMX 监控详解

    3.3.4、重命名密码文件:

# mv jmxremote.password.template jmxremote.password

3.3.5、编辑密码文件

# vim jmxremote.password

Tomcat 开启 JMX 监控详解

3.3.6、编辑完文件后, 要修改 access 文件和 password 文件权限,不然 tomcat 启动不起来

# chmod 600 jmxremote.*

  4、启动 tomcat
Tomcat 开启 JMX 监控详解
[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.
Tomcat 开启 JMX 监控详解

Tomcat 开启 JMX 监控详解

  4.1、做完上面操作,使用 jdk 自带的 jvisualvm.exe 连接,可以在 windows 下测试

Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  双击打开 jmx 连接

Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  4.2、重启 tomcat,测试 jmx 是否还可以连接上

# ./shutdown.sh

4.2.1、再次连接 jmx 查看是否可以连接上

数据监控图都查看不了,连接不上

Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

 为什会出现这个问题?

网上给出的结论是:

tomcat 的 jmx 远程健康是需要两个端口,一个是注册端口,一个是服务端口,之前配置指定的 9999 端口是注册端口,tomcat 在启动的时候会随机指定一个服务端口,由于我们注册端口只有一个,所以在重启服务后,注册端口没有变化,服务端口已经变了,再次通过注册端口连接已经连接不上之前的服务端口了,没有办法指定服务端连接,服务端口是随机的。

有一种方法是设置 jmx 固定的注册端口和服务端口,通过 jar 包实现

5、登录 tomcat 官网(注意,我的 tomcat 版本是 1.8.0 的官网上只有 1.8.5 的也可以使用)

网址:https://tomcat.apache.org/

根据自己的 tomcat 版本找到 JMX Remote jar

Tomcat 开启 JMX 监控详解

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

Tomcat 开启 JMX 监控详解

  7、编辑 tomcat 的 conf 目录下的 server.xml 文件

  # vim server.xml

添加下面内容:

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

Tomcat 开启 JMX 监控详解

  8、编辑 tomcat 的 bin 目录下 catalina.sh

# vim catalina.sh

删除参数:

-Dcom.sun.management.jmxremote.port=9999

Tomcat 开启 JMX 监控详解

  9、重启 tomcat 测试,jmx 注册端口为 10001,服务端口为 10002

Tomcat 开启 JMX 监控详解

    Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  10、重启 tomcat 再次连接测试

当我们双击之前创建的 jmx 远程连接的时候会发现也连接不上,这是为什么呢,这里我们要注意上面连接中的 pid 号,经过查询,我们发现这个 pid 号就是 linux 中 tomcat 的 pid 号,当我们重启 tomcat 后,会产生新的 pid 号,所以我们想要连接就要新建一个连接

Tomcat 开启 JMX 监控详解

  Tomcat 开启 JMX 监控详解

  11、我们再次新建 jmx 连接的时候会获取新的 pid 号

Tomcat 开启 JMX 监控详解

   Tomcat 开启 JMX 监控详解

  12、到这里我们就测试成功了,这样在我们使用 zabbix 使用 jmx 监控 tomcat 的时候就不用担心 tomcat 重启 jmx 端口连接不上了

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计3660字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中