centos7下安装zabbix监控tomcat

目录

一. 在tomcat的catalina.sh文件中,添加配置

二. 将对应tomcat版本的catalina-jmx-remote.jar放到tomcat下的lib文件夹下后

三. 在tomcat的server.xml文件中,添加配置后,重启tomcat

四.配置防火墙(firewalld),开放12345端口

五.安装zabbix-java-gateway后,并启动

六. 修改zabbix-server的配置文件zabbix_server.conf,并重启zabbix-server

七. zabbix web端配置

八.可能遇到的问题


一. 在tomcat的catalina.sh文件中,添加配置

centos7下安装zabbix监控tomcat

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
  -Dcom.sun.management.jmxremote.ssl=false                #是否使用SSL。
  -Dcom.sun.management.jmxremote.authenticate=false       #是否开启认证。
  -Djava.rmi.server.hostname=192.168.58.130"              #Tomcat所在服务器IP。

不在catalina.sh中配置 -Dcom.sun.management.jmxremote.port=12345,因为如果配置这个参数,在tomcat重启后,除了12345端口被监听外,还会随机监听一个端口,就会造成防火墙(firewalld)无法准确的开放这个随机端口而使得jmx监控失效

二. 将对应tomcat版本的catalina-jmx-remote.jar放到tomcat下的lib文件夹下后

因为我的tomcat是8.5.31版本,所以catalina-jmx-remote.jar的下载地址:http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.31/bin/extras/,其他版本的tomcat请下载对应的catalina-jmx-remote.jar

三. 在tomcat的server.xml文件中,添加配置后,重启tomcat

centos7下安装zabbix监控tomcat

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

在server.xml的shutdown中配置jmx监听端口,就可以避免第一步中出现的随机端口的问题

四.配置防火墙(firewalld),开放12345端口

firewall-cmd --zone=public --add-port=12345/tcp --permanent

firewall-cmd --reload

五.安装zabbix-java-gateway后,并启动

我的zabbix是按照官网的提供的步骤通过rpm,yum install安装的server,具体可以查看https://www.zabbix.com/download

因为默认没有安装zabbix-java-gateway,所以需要额外安装

centos7下安装zabbix监控tomcat

yum list zabbix*

yum install zabbix-java-gateway.x86_64

安装完成后,/etc/zabbix/zabbix_java_gateway.conf配置文件中的参数可以直接默认使用,然后启动zabbix-java-gateway

systemctl start zabbix-java-gateway

六. 修改zabbix-server的配置文件zabbix_server.conf,并重启zabbix-server

配置文件的路径是/etc/zabbix

centos7下安装zabbix监控tomcat

JavaGateway=127.0.0.1               #默认为空,而且因为server和java-gateway在同一台,所以配置为127.0.0.1

JavaGatewayPort=10052            #默认已经为10052,所以不用配置

StartJavaPollers=5                     #默认为0,修改成5

七. zabbix web端配置

zabbix自带的tomcat监控模块的监控项的键值和实际的tomcat不匹配所以需要修改,否则会报became not supported错误

jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]修改为

jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",bytesReceived]

这个name可以查看tomcat的catalina.out日志文件中得到,8080、8443、8009其他监控项键值修改同理

jmx["Catalina:type=Manager,path=/,host=localhost",activeSessions]"修改为

jmx["Catalina:type=Manager,context=/jenkins,host=localhost",maxActive] 将path修改为context,监控的是webapps下的jenkins项目

   如果这些name值不知道,或者还需要监控其他的zabbix自带的tomcat监控模块默认没有的项,可以在windows下使用jdk自带的jconsole.exe来查看

centos7下安装zabbix监控tomcat

centos7下安装zabbix监控tomcat

在需要的监控的主机中配置jmx接口,关联tomcat监控模块

centos7下安装zabbix监控tomcat

centos7下安装zabbix监控tomcat

八.可能遇到的问题

  1. 由于防火墙的关系,所以需要开放端口,如果在tomcat的catalina.sh中配置了12345端口,启动tomcat后jmx会监听两个端口,一个是12345,另外一个是随机生成的,就会造成端口开放无法完全,具体解决方法查看上面的第一到第三步
  2. zabbix-server日志中报监控项    jmx["Catalina:type=GlobalRequestProcessor,name=http-8080",bytesReceived]" became not supported: Catalina:type=GlobalRequestProcessor,name=http-8080 一系列 became not supported的错误,具体解决方法查看上面的第七