Zabbix监控Tomcat

Java gateway简介

从Zabbix 2.0版本开始,以Zabbix守护进程的形式原生支持监控JMX程序出现了,它被称为Zabbix Java gateway。Zabbix gateway 是用Java语言写成。要查得一台主机特定的JMX计数器值,Zabbix server向Zabbix Java gateway发送请求,后者使用JMX管理API 去请求远程的有关应用。应用不需要额外安装软件,只需要启动时在命令行指定-Dcom.sun.management.jmxremote 即可。

Java gateway接受来自Zabbix Server或Agent的传入连接,且只能用作“被动proxy”。 与Zabbix proxy相反,它也可以从Zabbix agent调用(Zabbix agent不能被链接)。 每个Java gateway的访问都直接在Zabbix sever或 proxy配置文件中配置,因此每个Zabbix sever或Zabbix agent只能配置一个Java gateway。 如果一台主机具 JMX agent 类型的监控项和和其他类型的监控项,则只将JMX agent监控项传递到Java gateway进行检索。

当在Java gateway上的一个监控项值更新了,Zabbix server或agent将连接Java gateway请求查询该值,Java gateway会依次retrieves并传回到server或proxy。 同样的,Java gateway不会缓存任何值.

Zabbix sever或proxy具有连接到Java gateway特定类型的进程,由 START_POLLERS 选项控制。 在内部,Java gateway启动多个由该选项控制的线程。 在sever端,如果连接超过 Timeout 秒,则将终止,但Java gateway可能仍忙于从JMX计数器检索值。 为了解决这个问题,由于Zabbix 2.0.15,Zabbix 2.2.10和Zabbix 2.4.5在Java gateway中有TIMEOUT选项,允许为JMX网络操作设置超时。

Zabbix server或agent将尽可能地将请求集中到一个JMX目标(受监控项间隔影响),并将它们发送到单一连接中的Java gateway,以获得更好的性能。 建议 StartJavaPollers 小于或等于 START_POLLERS ,否则可能导致当连接Java gateway时而Java gateway没有多余的线程进行处理

安装Tomcat8.5

yum install java-1.8.0-openjdk #安装jdk
cd /usr/local/src
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz
 #官网找的tar包地址
tar xf apache-tomcat-8.5.34.tar.gz
mv apache-tomcat-8.5.34 /usr/local/tomcat-8.5
ln -sv /usr/local/tomcat-8.5 /usr/local/tomcat
PATH=/usr/local/tomcat/bin:$PATH

启动Tomcat

catalina.sh start

可以看到8080端口起了
在这里插入图片描述
在这里插入图片描述
能访问说明没问题

配置JMX

修改tomcat配置文件/usr/local/tomcat/bin/catalina.sh

CATALINA_OPTS="$CATALINA_OPTS 
-Dcom.sun.management.jmxremote  #启用远程监控JMX
-Dcom.sun.management.jmxremote.port=12345 #默认启动的JMX端口号, 要和zabbix添加主机时候的端口一致即可
-Dcom.sun.management.jmxremote.authenticate=false  #不使用用户名密码
-Dcom.sun.management.jmxremote.ssl=false  #不使用ssl认证
-Djava.rmi.server.hostname=192.168.253.128" #tomcat主机自己的IP地址, 不要写zabbix服务器的地址

重启tomcat

catalina.sh stop
catalina.sh start

Java gateway安装配置

安装Java gateway

如果是编译安装的话需要打开–enable-java以支持jmx监控
如果yum安装的话可以使用下面命令

yum install zabbix-java-gateway

配置Java gateway

修改配置文件/etc/zabbix/zabbix_java_gateway.conf

[[email protected] ~]# grep "^[a-Z]" /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP=192.168.253.128   #监听的地址
LISTEN_PORT=10052  #默认监听10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=20  #启动多少个进程轮训java, 要和java 应用保持一定关系
TIMEOUT=30  #这个时长最好稍微长一些,因为java应用是比较慢的,如果超时时间太短,会导致数据获取不到

启动Java gateway

systemctl  start zabbix-java-gateway

在这里插入图片描述

修改zabbix server配置文件

修改zabbix server配置文件/etc/zabbix/zabbix_server.conf

JavaGateway=192.168.253.128 #指定java gateway的地址
JavaGatewayPort=10052 #指定java gateway的服务器监听端口, 如果是默认端口可以不写
StartJavaPollers=20 #启动多少个进程去轮训 java gateway, 要和java gateway的配置一致
Timeout=30#如果时间太短,有些数据会获取不到,因为java处理比较慢

重启zabbix server

systemctl  restart zabbix-server

网页端配置Java gateway

添加Java gateway接口
在这里插入图片描述
关联一个tomcat模版上去
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

可以看到获取到数据了

参考链接
https://www.zabbix.com/documentation/3.4/zh/manual/concepts/java