进入tomcat的bin目录编辑shell
vi catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=XXXXX -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=jmxremote.password -Dcom.sun.management.jmxremote.access.file=jmxremote.access"
也可以把这段话加入JAVA_OPTS
注意-Djava.rmi.server.hostname=XXXXX 一定要加。网上很多资料没有写这段,我想是因为本地连接不需要。
-Dcom.sun.management.jmxremote.authenticate=true 也可以改成false,这样可以省去认证环节。
mxremote.password和jmxremote.access 是认证需要的文件,可以从java_home/jre/lib/management 里考一份到tomcat的bin下面
编辑 mxremote.password设置密码,例如
monitorRole 123
controlRole 123
然后在本地机器打开java_home/bin/jconsole
选择远程连接
输入 XXXXX:8888
用户名:controlRole
密码:123
连进去试试看,如果不成功可以查看下8888端口是否打开
netstat -anp|grep 8888
这条命令也可以查看占用8888端口的进程号。
接着可以用jconsole打开图形界面来观察数据,注意MBean这个tab。
里面的属性对应这zabbix的item,很多人说zabbix集成的tomcat模板有问题。
其实就是模板里设置的item的Key与下图的objectName不一致。例如下面这个例子,模板中的name我记得原来好像是“http-8080”
zabbix要想正确读取jmx传来的数据,还需要配置zabbix_java_gateway。
vi zabbix_java_gateway.conf
# This is a configuration file for Zabbix Java Gateway.
# It is sourced by startup.sh and shutdown.sh scripts.
### Option: zabbix.listenIP
# IP address to listen on.
#
# Mandatory: no
# Default:
LISTEN_IP="127.0.0.1"
### Option: zabbix.listenPort
# Port to listen on.
#
# Mandatory: no
# Range: 1024-32767
# Default:
LISTEN_PORT=10052
### Option: zabbix.pidFile
# Name of PID file.
# If omitted, Zabbix Java Gateway is started as a console application.
#
# Mandatory: no
# Default:
# PID_FILE=
PID_FILE="/var/run/zabbix/zabbix_java.pid"
LogFile=/mnt/erp/log/zabbix/zabbix_java_gateway.log
### Option: zabbix.startPollers
# Number of worker threads to start.
#
# Mandatory: no
# Range: 1-1000
# Default:
START_POLLERS=5
保存后,启动gateway即可
/etc/init.d/zabbix-java-gateway
成功之后,去zabbix的web页面配置下
确认到jmx的标记绿了,说明成功了
当然,配置失败的可能性会很大。
失败的情况下可以用一下命令调试。
zabbix_get -s XXX.XXX.XXX.XX -p 1234 -k jmx["org.dozer.jmx:type=ThreadPool,name=\"http-bio-8080\"",currentThreadCount]
或者
比如说,["]需要转义。