简介
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接口的主机。