新闻动态
新闻动态
NEWS INFORMATION

通过Tomcat开启JMX监控的方法图解

发布日期:2022-02-14 12:39 | 文章来源:站长之家

搭建模拟环境:
操作系统: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的也可以使用)

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

    根据自己的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监控的方法图解,希望对大家有所帮助!

香港稳定服务器

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部
请您留言

YINGSOO400-630-3752

提交