zabbix-监控tomcat

简介

zabbix server是使用php写的前端,但java服务是使用java编写的,两个的运行环境不一样,所以zabbix无法直接监控java服务,这就用到了java gateway,java gateway一头可以连接zabbix server,一头连接java服务,zabbix server通过访问java gateway,java gateway再访问java服务,从而zabbix server获取到java服务的监控数据。

准备jdk环境与安装tomcat

准备jdk环境:
1、tar xvf jdk-8u241-linux-x64.tar.gz

2、ln -sv /usr/local/src/jdk1.8.0_241 /usr/local/jdk

3、root@test:/usr/local/src# vim /etc/profile
export JAVA_HOME=/usr/local/jdk 
export TOMCAT_HOME=/apps/tomcat 
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH 
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

4、. /etc/profile

准备tomcat:
1、mkdir /apps

2、cd /apps

3、tar xvf apache-tomcat-8.5.51.tar.gz

4、ln -sv /apps/apache-tomcat-8.5.51 /apps/tomcat

部署java gateway

apt安装:
1、wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb

2、dpkg -i zabbix-release_4.0-3+bionic_all.deb

3、apt update

4、apt install zabbix-java-gateway -y   #java gateway是java写的,apt安装会自动安装java运行环境

5、root@test:~# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052        #java gateway的监听端口是10052
START_POLLERS=20         #指定java gateway开启多个进程去采集java服务的监控数据
TIMEOUT=30 #在指定时间内java服务没有把监控数据给java gateway,则java gateway会给zabbix server报超时

6、systemctl start zabbix-java-gateway

7、systemctl enable zabbix-java-gateway



编译安装java gateway与编译安装zabbix一样,只需要在编译时,指定--enable-java即可编译安装java gateway;

1、vim /apps/zabbix-proxy/sbin/zabbix_java/settings.sh   #配置java gateway配置文件
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=20   #指定开启多少个进程收集数据
TIMEOUT=30

2、/apps/zabbix-proxy/sbin/zabbix_java/startup.sh   #启动java gateway

zabbix server需要做的配置

1、root@test:~# vim /apps/zabbix-server/etc/zabbix_server.conf
JavaGateway=192.168.3.201    #指定java gateway地址
JavaGatewayPort=10052        #指定java gateway的端口
StartJavaPollers=5  
#指定预启动多少个进程采集java gateway主机的数据,此项最好与java gateway上配置采集java服务的进程数量一致

2、systemctl restart zabbix-server

tomcat服务器上需要做的配置

1、vim /apps/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=f
alse -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.3.201"

2、/apps/tomcat/bin/catalina.sh start

添加所要监控的java服务器

1、创建一个新的所要监控的主机或者从已有的主机关联所要监控的java服务的模板
2、给所要监控的java主机关联一个模板

提示

-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=x.x.x.x" #tomcat主机自己的IP地址,不要写zabbix服务器的地址

JMX(java管理扩展),是一个植入java应用程序中的管理功能框架,用户可以在任何Java应用程序中使用这些代理和服务实现管理。

注意事项

server把监控项发送给所需要获取数据的agent,通过10050端口(被动模式下),系统的基本模板等监控项都需要通过10050发送给agent,但是监控java服务的模板,则需要把监控项发送给java gateway,java gateway再把监控项通过java服务器的12345端口发送给java服务,从而获取到java服务的数据,所以监控java服务的监控项,不会使用agent的10050端口,而是使用JMX的12345端口;则如果只想监控java服务所在服务器的有关java的数据,则不需安装agent,server会把监控项发送给java gateway的10052端口,java gateway再把监控项发送给java所在服务器的12345端口;除了监控java服务,其余监控项都是使用agent的10050端口进行发送的,这就说明了,java服务器是没有主动被动之分的,但是agent服务器是有主被动模式之分的;当给主机关联模板时,如果使用agent10050接口,则只能关联普通模板,如果关联的java模板,则会报错,因为java模板,需要关联给开启JXM接口的主机。
原文地址:https://www.cnblogs.com/dongzhanyi123/p/13299491.html