zabbix之通过jmx监控tomcat

一、安装配置JDK

# rpm -ivh jdk-8u45-linux-x64.rpm

# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar


系统配置立即生效

# source /etc/profile.d/java.sh

查看JAVA版本

# java -version

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)


二、zabbix的编译

1、编译zabbix的时候需要添加参数--enable-java

2、备份zabbix_server.conf和zabbix_agentd.conf文件,重新编译安装zabbix

 ./configure \
--prefix=/usr/local/zabbix \
--sysconfdir=/etc/zabbix \
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-ssh2 
--enable-java


三、zabbix的配置

1、修改zabbix_java相关选项

# cd /usr/local/zabbix/sbin/zabbix_java/

# vim settings.sh

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/tmp/zabbix_java.pid"
START_POLLERS=5

    其中 LISTEN_PORT 和 LISTEN_IP 可以不配置,zabbix_java 会采用默认值。但是 PID_FILE 和 START_POLLERS 必须配置,尤其主意 START_POLLERS,若不配置 zabbix_java 依旧可以启动但是是不工作的。


2、修改zabbix_server文件

在配置文件中开启如下几项参数

JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5


    这三项都需要配置,其中 StartJavaPollers 会被视为开关性质的参数。0 或者未配置将被系统认为不具有 Java 信息抓取能力。这点在 Zabbix JMX Monitoring Wiki 中未提及,但是实际效果就是这样。同时 Zabbix Proxy 的配置文件解析 中也有介绍此参数的含义。


3、启动zabbix_java

找到zabbix_java目录路径,然后执行命令./startup.sh


4、调整tomcat端,安装catalina-jmx-remote.jar

# wget  http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/extras/catalina-jmx-remote.jar

将下载好的文件存放到tomcat子目录目录lib录下

# mv catalina-jmx-remote.jar /usr/local/tomcat/lib/


5、修改catalina.sh文件

修改catalina.sh文件,添加

CATALINA_OPTS="-Xms1024m -Xmx1024m 
-XX:NewRatio=4 
-XX:PermSize=192m 
-XX:MaxPermSize=192m 
-Xss256k 
-XX:SurvivorRatio=4 
-Dcom.sun.management.jmxremote  
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.port=8090   
-Dcom.sun.management.jmxremote.ssh=false 
-Djava.rmi.server.hostname=10.0.0.15"      10.0.0.15是客户端的IP,8090是端口


    就这种方式而言,需要注意的是 catalina.sh 中提供的默认变量名 JAVA_OPTS 和 CATALINA_OPTS。由于 JAVA_OPTS 所添加的参数会在 tomcat 开启和关闭时都运行,所以如果你把 -Dcom.sun.management.jmxremote.port=8090 写在 JAVA_OPTS 中,就会在关闭 tomcat 时出现如下错误,从而无法关闭。

Error: Exception thrown by the agent : java.rmi.server.ExportException : Port
already in use: 8090;nested exception is:
java.net.BindException: Address already in use: JVM_Bind

    而 CATALINA_OPTS 只会在开启 tomcat 的时候运行,所以应该将这些配置写在 CATALINA_OPTS 中。这个问题在这里有被详细的讨论。

    但是这并不是在 tomcat 中开启 jmx 的正确方式,如果你用这种方式,紧接着就会遇到 这样的问题。
    正确的方式应该是这样的:

1、在 tomcat 下载页面 Extras 类别中下载 JMX Remote jar 二进制包。放在 tomcat/lib 下面.

2、修改 tomcat server.xml 配置文件,添加以下内容:

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="8090" rmiServerPortPlatform="8090" />

具体参数内容请参考 apache tomcat 文档。

3、修改 tomcat/bin 目录下 catalina.sh ,添加以下内容:

CATALINA_OPTS="-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=10.0.0.15"


4、确保 zabbix server 或者 proxy 和 配置文件中的端口通讯畅通。在这里写上 hostname 是由于 hostname 默认值为 localhost,如果你的 tomcat 未监听在 localhost,那么不写具体 ip 会引发问题。


5、重启启动tomcat服务和zabbix_agentd服务

6、服务器端测试是否能正常获取信息

# java -jar /root/cmdline-jmxclient-0.10.3.jar - 10.0.0.15:8090 java.lang:type=Memory NonHeapMemoryUsage
09/07/2015 17:29:29 +0800 org.archive.jmx.Client NonHeapMemoryUsage: 
committed: 80543744
init: 2555904
max: -1
used: 76760296

wKiom1Xv0NWyyCisAADcCtO_6ho373.jpg


四、服务器端自定义监控项

1、添加主机的地方填写如下

wKioL1Xv056gV1reAAP3JT5dN5E581.jpg

wKiom1Xv0XqSVJ_wAALD8zSdu6A960.jpg


我们切换到Items可以自定义要监控的key

wKiom1Xv0eiD5Zm0AAM9eD_Js-4211.jpg       

   这个就需要我们知道一些监控的key的参数,可以查看下面的参考官方地址,下面我提供一下我找的zabbix监控JVM的模版,大家在模版目录里面导入进去就可以直接使用了,增加了一下几个图标和很多Iteams。


wKioL1Xv1aSRiVcPAAGr5u98Nb4729.jpg


wKiom1Xv04mxk_q9AAX3yo1KQGU235.jpg


参考地址:https://www.zabbix.com/documentation/2.4/manual/config/items/itemtypes/jmx_monitoring?s[]=jmx

          https://www.zabbix.com/documentation/2.4/manual/concepts/java

          http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html 

如果想详细理解,搭建请看上面的官方文档讲解。


你可能感兴趣的:(java,jmx,zabbix)