工作原理:
比如:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。
一、配置服务端
编译安装zabbix server需要加上--enable-java以支持jmx监控,如果之前的zabbix server没加,那么请重新编译安装
安装zabbix-java-gateway
下载地址
http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/zabbix-java-gateway-3.0.4-1.el6.x86_64.rpm
rpm -ivh zabbix-java-gateway-3.0.4-1.el6.x86_64.rpm
启动zabbix_java
/etc/init.d/zabbix-java-gateway
配置Zabbix Java GateWay
配置文件: /etc/zabbix/zabbix_java_gateway.conf
支持的配置选项为:
名称 选项说明
LISTEN_IP 指定bind的地址,默认值为0.0.0.0
LISTEN_PORT 指定bind的端口,默认值为10052
PID_FILE 指定PID文件存放目录,默认为 /tmp/zabbix_java.pid
START_POLLERS 指定启动多少进程, 默认为5
Zabbix Java GateWay启动后,也需要在Zabbix Server/Proxy上进行配置,对应的配置文件选项为:
名称 选项说明
JavaGateway 指定Zabbix Java GateWay地址
JavaGatewayPort 指定Zabbix Java GateWay端口,默认为10052
StartJavaPollers 指定启动时启动的Java Pollers数量
注意:Zabbix Server/Proxy中的StartJavaPollers要小于等于Zabbix Java GateWay配置文件中的START_POLLERS
#zabbix_java_gateway配置文件里有默认端口等设置,这里我们保持默认即可
设置成开机启动:
systemctl enable zabbix-java-gateway
配置zabbix-server访问gateway
vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1 #gateway地址
JavaGatewayPort=10052 #监听端口
StartJavaPollers=5#预启动进程轮训个数
重启zabbix-server使配置生效
systemctl restart zabbix-server.service
二、配置客户端:
配置tomcat启动脚本:
vim /usr/local/tomcat/bin/catalina.sh
419
420 shift
421 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.managem ent.jmxremote.authenticate=false -Djava.rmi.server.hostname=123.45.6.78" \\客户端ip
422 touch "$CATALINA_OUT"
423 if [ "$1" = "-security" ] ; then
424 if [ $have_tty -eq 1 ]; then
然后重启tomcat生效。
测试:
1.在tomcat下载页面Extra类别中下载 JMX Remote jar 二进制包。放在 tomcat/lib 下面.
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.53/bin/extras/catalina-jmx-remote.jar
2.下载jmxcmd.jar文件测试是否恩能够取得数据
#wget http://nchc.dl.sourceforge.net/project/jmxcmd/jmxcmd.jar
测试有数据则表示成功
命令格式:
java -jar jmxcmd.jar - yourip:jmx端java.lang:type=MemoryNonHeapMemoryUsage
# java -jar jmxcmd.jar - 192.168.3.18:12345 java.lang:type=Memory NonHeapMemoryUsage
09/21/2016 20:25:45 +0800 de.layereight.jmxcmd.Client NonHeapMemoryUsage:
committed: 72876032
init: 2555904
max: -1
used: 71414864
# java -jar jmxcmd.jar - 192.168.3.18:12346 java.lang:type=Memory NonHeapMemoryUsage
09/21/2016 20:25:59 +0800 de.layereight.jmxcmd.Client NonHeapMemoryUsage:
committed: 101371904
init: 2555904