JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。基本常见的java程序的监控都是基于jmx协议进行的实现。本篇就结合zabbix和tomcat实现jmx对java的监控示例。
一、zabbix server端的配置
1、安装java gateway
yum -y install zabbix-java-gateway
同时该主机上需要部署jdk环境。
2、java gateway配置
java gateway配置文件/etc/zabbix/zabbix_java_gateway.conf,其涉及的主要配置内容有如下几项:
LISTEN_IP="0.0.0.0" #监听服务器地址
LISTEN_PORT=10052 #监听zabbix_java进程的端口,默认是10052
PID_FILE="/tmp/zabbix_java.pid" #zabbix_java的pid路径
START_POLLERS=5 #zabbix_java的进程数
TIMEOUT=10 #zabbix_java的超时时间
3、修改zabbix_server配置文件
修改/etc/zabbix/zabbix_server.conf,主要增加如下部分内容:
JavaGateway=10.212.52.14 #Java网关地址,即为Zabbix Server本身地址
JavaGatewayPort=10052 #Java网关监控端口
StartJavaPollers=5 #启动Java监控的进程数
修改完成后,重启Zabbix Server生效。并启动zabbix java gateway程序:
systemctl start zabbix-java-gateway
二、zabbix agent端的配置
1、加载jmx-remote.jar包
通过tomcat下的version.sh脚本获取当前tomcat 的版本信息:
sh version.sh
----------------------------------------------------
Server version: Apache Tomcat/8.0.33
Server built: Mar 18 2016 20:31:49 UTC
Server number: 8.0.33.0
OS Name: Linux
OS Version: 2.6.32-431.el6.x86_64
Architecture: amd64
JVM Version: 1.8.0_91-b14
JVM Vendor: Oracle Corporation
下载tomcat对应版本的jmx jar包:
cd /App/tomcat/lib
wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.33/bin/extras/catalina-jmx-remote.jar
注:该jar包,需要重启tomcat生效。
2、修改CATALINA_OPTS选项
这里修改方法有两种,第一种是只修改catalina.sh文件;另一种方法是修改catalina.sh和server.xml两个文件,先看第一种方法:
修改tomcat的catalina.sh配置文件,增加如下内容:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=本机IP地址"
两个文件处理的方法是,catalina.sh 文件写入如下内容:
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=本机IP地址"
server.xml 文件写入如下内容:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9999" rmiServerPortPlatform="9999"/>
三、使用jmxcmd验证
下载jmxcmd ,地址:https://sourceforge.net/projects/jmxcmd/
# java -jar jmxcmd.jar - 10.212.149.204:12345 java.lang:type=Memory NonHeapMemoryUsage
03/21/2019 11:39:21 +0800 de.layereight.jmxcmd.Client NonHeapMemoryUsage:
committed: 170053632
init: 2555904
max: -1
used: 159088136
上面可以正常获取数据的话,就表示tomcat的jmx配置是正确的。
四、zabbix web页面配置
打开zabbix页面,找到配置–主机项,在配置主机的下面有jmx配置选项,输入相关信息:
切换到主机模块配置选项卡,在模板里关联上对应的java模板,生效以后等一会儿就会出数据了。
五、涉及密码认证的jmx监控
有时候出于安全考虑,我们会对jmx的访问设置访问的用户名和密码,这可以通过配置宏,并在相应的item里引用宏进行监控,宏配置如下:
在模板item配置项中引用的如下:
六、非tomcat java程序启用jmx
非tomcat类程序需要使用jmx,除需要引用相关的jar包,并在代码里进行引用之外,可以在启动的时候在参数选项里指定启用jmx,示例如下:
java \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar/usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar