zabbix小结(十七)zabbix jmx监控

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配置选项,输入相关信息:

zabbix-jmx

切换到主机模块配置选项卡,在模板里关联上对应的java模板,生效以后等一会儿就会出数据了。

五、涉及密码认证的jmx监控

有时候出于安全考虑,我们会对jmx的访问设置访问的用户名和密码,这可以通过配置宏,并在相应的item里引用宏进行监控,宏配置如下:

jmx-macros

在模板item配置项中引用的如下:

item-username-passwd

六、非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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注