JMX(Java Management Extensions,即Java管理扩展)是java平台上为应用程序、设备、系统等植入管理功能的框架。
JMX工作原理:
zabbix_server想知道一台主机上的特定的JMX值时,它向Zabbix-Java-gateway询问,而Zabbix-Javagateway使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX查询就行了。
Zabbixserver有一个特殊的进程用来连接Java-gateway叫StartJavaPollers;Java-gateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Java-gateway将继续从JMXcounter取数据。所以 StartJavaPollers设的值要小于等于START_POLLERS设置的值。 Zabbix-Java-gateway就相当于一个代理。
配置JMX监控步骤:
1、安装Zabbix-Java-Gateway
2、配置zabbix_java_gateway.conf参数
3、配置zabbix_server.conf参数
4、Java应用开启JMX协议
5、Zabbix Web配置JMX监控的Java应用
安装Zabbix-Java-Gateway
源码安装的时候,加--enable-java参数,依赖关系有java、java-devel软件包。
RPM方式安装命令如下:
1
|
# yum -y install zabbix-java-gateway
|
配置zabix_java_gateway.conf文件
1
2
3
4
5
|
[root@dnsserver zabbix]
# grep -v '^#' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP=
"127.0.0.1"
LISTEN_PORT=10052
PID_FILE=
"/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
|
配置zabbix_server.conf文件
1
2
3
|
StartJavaPollers=5
JavaGateway=127.0.0.1
JavaGatewayPort=10052
|
注意:如果要使用JMX监控,那么必须满足
StartJavaPollers <= START_POLLERS
如果不满足这个条件,就会出现Zabbix-Server向Zabbix-Java-Gateway发出请求后无响应的情况。
重启zabbix-server服务和zabbix-java-gateway服务
1
|
service zabbix-java-gateway restart
|
使用JMX监控Tomcat:
1、修改tomcat端的配置文件:
编辑TOMCAT_HOME/bin/catalina.sh,如果是监控本地的tomcat,则加入以下指令: 千万注意复制粘贴过去后换行符的问题
1
|
CATALINA_OPTS=
"-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345"
|
监控远程主机上的Tomcat实例:
1
|
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=
false
-Dcom.sun.management.jmxremote.ssl=
false
-Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.
hostname
=10.10.10.202
|
IP地址填写远程主机的IP地址。
修改Tomcat配置文件后,记得重启Tomcat。
注意:在测试环境中,发现启动tomcat总是失败,原因是主机名无法被解析,导致tomcat无法启动。报错信息如下:
1
2
|
Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: dnsserve
r: dnsserver: unknown error
|
解决办法:编辑/etc/hosts文件,将hostname写到该文件中
1
2
|
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 dnsserver
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
|
添加tomcat 的JMX监控,并链接JMX的监控模板
查看是否获取到监控数据
命令行获取JMX监控数据:
要先下载 cmdline-jmxclient-0.10.3.jar工具
[root@dnsserver srv]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory NonHeapMemoryUsage
06/15/2016 11:32:34 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 28835840
init: 2555904
max: -1
used: 27741272