Zabbix 2.2:基于 Java Gateway 监控 Tomcat

2.2:基于 Java Gateway 监控 Tomcat

Zabbix要想获取javaVM、Java程序相关的一些指标数据,需要通过JavaGateway。

JavaGateway可以单独部署在一台服务器上,也可以和zabbix-server部署在同一台服务器。

获取java相关监控数据是通过JMX进行的,并不通过zabbix-agent。

拓扑图

在这里插入图片描述

Zabbix Server:192.168.1.101

Java Gateway:192.168.1.103

Tomcat:192.168.1.111,部署tomcat-8.0.38,并开启JMX远程监控(以支持远程获取指标数据)。

2.2.1:node103 部署 Java Gateway

2.2.1.1:apt 安装 Java Gateway

下载并安装zabbix官方apt源。

root@node103:~# wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb  

root@node103:~# dpkg -i zabbix-release_4.0-3+bionic_all.deb

root@node103:~# apt update

安装java gateway:

root@node103:~# apt install zabbix-java-gateway
2.2.1.2:配置并启动 Java Gateway

编辑java gateway的配置文件/etc/zabbix/zabbix_java_gateway.conf

默认就监听在所有IP上,不需要更改也可以直接使用。

root@node103:~# grep '^[a-Z]' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
START_POLLERS=5
TIMEOUT=3

启动javagateway,并设为开机启动。

root@node103:~# systemctl restart zabbix-java-gateway && systemctl enable zabbix-java-gateway

验证监听端口:

root@node103:~# ss -tnlp | grep 10052

验证进程:

root@node103:~# ps -ef | grep zabbix 
zabbix     5017      1  1 17:27 ?        00:00:00 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-4.0.29.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java_gateway.pid -Dzabbix.listenIP=0.0.0.0 -Dzabbix.listenPort=10052 -Dzabbix.startPollers=5 -Dzabbix.timeout=10 -Dsun.rmi.transport.tcp.responseTimeout=10000 com.zabbix.gateway.JavaGateway
2.2.1.3:配置 Zabbix Server 调用 Java Gateway

需要为zabbix server配置java gateway的地址和监听端口,以使server可以从java gateway获取监控数据。

从刚才配置java gateway也看到了,配置中只有监听地址,而没有指定server端,也就可以理解为,java gateway只能被动监听,等待server来获取监控数据。

将java poller的启动个数设置为10个,即有10个进程从java gateway获取数据。

root@node101:~# vim /etc/zabbix/zabbix_server.conf 
JavaGateway=192.168.1.103
JavaGatewayPort=10052
StartJavaPollers=10

更改完成后重启zabbix-server:

root@node101:~# systemctl restart zabbix-server

验证 java poller 的个数,与配置一致。

root@node101:~# ps -ef | grep -v grep | grep "java poller" -c
10

2.2.2:准备被监控 Tomcat 主机

2.2.2.1:准备 JDK 环境

采用tar包解压的方式安装。

解压jdk程序包,并创建软链接。

root@node111:~# cd /usr/local/src
root@node111:/usr/local/src# tar xf jdk-8u212-linux-x64.tar.gz 

root@node111:~# ln -sv /usr/local/src/jdk1.8.0_212/ /usr/local/jdk

设置java环境变量:

root@node111:~# 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

root@node111:~# source /etc/profile

验证java版本:

root@node111:~# java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
2.2.2.2:安装 Tomcat

采用tar包解压方式进行安装。

解压tomcat程序tar包,创建软链接。

root@node111:~# mkdir /apps
root@node111:~# cp /usr/local/src/apache-tomcat-8.0.38.tar.gz /apps/

root@node111:~# cd /apps
root@node111:/apps# tar xf apache-tomcat-8.0.38.tar.gz 

root@node111:/apps# ln -sv apache-tomcat-8.0.38 tomcat
2.2.2.3:准备测试程序

使用tomcat官方提供的sample.war作为测试程序。

root@node111:~# mkdir /apps/tomcat/webapps/sample
root@node111:~# cp /root/sample.war /apps/tomcat/webapps/sample/

root@node111:~# cd /apps/tomcat/webapps/sample/
root@node111:/apps/tomcat/webapps/sample# jar xf sample.war

启动tomcat,测试sample程序。

root@node111:~# catalina.sh start
Using CATALINA_BASE:   /apps/tomcat
Using CATALINA_HOME:   /apps/tomcat
Using CATALINA_TMPDIR: /apps/tomcat/temp
Using JRE_HOME:        /usr/local/jdk
Using CLASSPATH:       /apps/tomcat/bin/bootstrap.jar:/apps/tomcat/bin/tomcat-juli.jar
Tomcat started.

浏览器访问http://192.168.1.111:8080/sample/

在这里插入图片描述

2.2.2.4:Tomcat 开启 JMX 远程监控

要远程获取tomcat的java运行状态,需要编辑catalina.sh启动脚本,添加JMX相关参数。

与JMX监控的相关参数如下:

参数说明
Dcom.sun.management.jmxremoteJMX 远程监控开关
Djava.rmi.server.hostname=IP/hostname需要监控的java服务的地址
Dcom.sun.management.jmxremote.port=PORTJMX监听端口
Dcom.sun.management.jmxremote.ssl=true/false是否使用SSL
Dcom.sun.management.jmxremote.authenticate=true/false是否使用密码验证

编辑catalina.sh,按需配置JMX相关参数。

开启JMX,配置需要监听的java为本机地址;端口为12345,不适用SLL通信和密码认证。

root@node111:~# vim /apps/tomcat/bin/catalina.sh 
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.1.111
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

配置完成后重启tomcat。

root@node111:~# catalina.sh stop                 
root@node111:~# catalina.sh start                

验证JMX监听端口:

root@node111:~# ss -tnlp | grep 12345             
LISTEN  0        50                           *:12345                  *:*       users:(("java",pid=4079,fd=20))
2.2.2.5:使用 jconsole 验证 JMX 的连接

PC机安装windows版的jdk,在bin下会有jconsole.exe应用程序,可用于连接JMX,验证是否可以获取到指标数据。

打开jconsole,选择远程进程,输入IP:PORT,进行连接。

在这里插入图片描述

连接成功后,会看到指定javaVM的运行状态。

在这里插入图片描述
能通过jconsole获取到数据,就说明tomcat的JMX接口可以正常访问了。

2.2.3:Zabbix Server 添加被监控 Tomcat 主机

2.2.3.1:添加主机

配置-主机-创建主机:

在这里插入图片描述

填写主机信息,添加JMX接口:

在这里插入图片描述

关联模板。

使用zabbix自带的tomcat JMX监控模板。

在这里插入图片描述

2.2.3.2:验证监控数据

最新数据:

在这里插入图片描述

图形:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值