JMX是Java Management Extensions的简写,翻译为Java管理扩展。JMX是Java官方提供的一套用于监控Java程序和JVM运行时状态的标准API,通过JMX我们可以监控服务器的硬件资源(CPU、内存等)、JVM内存使用情况、JVM线程情况、JVM中的类的情况等指标。总之,一句话JMX主要用来帮助我们监控JVM。
今天我们的主角是Tomcat,那么JMX和Tomcat是什么关系?其实,它俩倒没啥关系,JMX是在JDK当中用的,但是Tomcat在启动的时候可以顺便把JMX启开(简单讲就是监听了一个端口)。也就是说,不管你是用Tomcat,还是用Jboss或者Weblogic都可以开启JMX。
那么在Tomcat服务器上如何开启JMX呢?
1)编辑catalina.sh
# vim /usr/local/tomcat/bin/catalina.sh# 在#!/bin/bash下面增加:
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.18.101
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
说明:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #启用JMX远程监控。
-Dcom.sun.management.jmxremote.ssl=false #是否使用SSL。
-Dcom.sun.management.jmxremote.authenticate=false #是否开启认证,还支持开启认证,需要定义用户名、密码。
-Djava.rmi.server.hostname=192.168.18.101" #Tomcat所在服务器IP。
-Dcom.sun.management.jmxremote.port=9999 #定义监听端口。
2)重启Tomcat
# /usr/local/tomcat/bin/shutdown.sh# /usr/local/tomcat/bin/startup.sh
3)检测监听端口
# netstat -ltnp |grep 9999提醒:如果不使用认证,则一定要做一个安全策略,比如针对JMX端口(本例为9999)做一个iptables策略,只允许连接JMX的IP(比如,zabbix)放行。
JMX开启后,我们再到windows上安装一个Jconsole,其实安装JDK就有Jconsole了,到Oracle官网下载JDK(地址https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) 先点击"Accept License Agreement",然后点击Windows X64就会自动下载了,下载后双击进行安装。
安装后,找到jdk安装路径,进入bin文件夹,然后找到jconsole.exe文件双击就可以运行起来了。输入JMX的IP:Port连接,如下图:
然后点击“不安全的连接”,进入Jconsole界面:
这样可以看到内存、线程、类等信息:
编辑回复