简言
工作中我们的服务器运行着很多项目,有一些是运行在tomcat上面的,所以我们可以监控tomcat的状态,来及时的查看项目运行的正常状态!
看图理解原理
1.zabbix-Web前端界面,它通过数据库里数据展示。和其它组件不直接关联
2.zabbix-Server运行在10051端口,Zabbix-Server要知道java应用程序的某项性能的使用时候 ,会启动自身的一个Zabbix-JavaPollers进程去链接zabbix-JavaGateway请求数据,而zabbix-JavaGateway收到请求后并使用;
3.Zabbixserver有一个特殊的进程用来连接Javagateway叫StartJavaPollers;JavaGateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Javagateway将继续从JMXcounter取数据。所以StartJavaPollers设置的值要小于等于START_POLLERS设置的值。zabbix-server只要向zabbix-java-gateway取数据添加到数据库即可
4.zabbix-java-gateway工作在10052端口,Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据。图中的12345端口是在配置tomcat时指定的,可是自定义。
5.在一个监控系统只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达。
准备工作
zabbix服务端 192.168.43.32
zabbixagent端(安装tomcat的服务器) 192.168.43.31
cmdline-jmxclient-0.10.3.jar包
一、Zabbix服务端配置
1.首先我们需要安装一个插件zabbix-java-gateway,这里我们使用yum安装。
注意我们建议java-gateway和server安装在一起,当然也可以部署在其他服务器上
#安装
yum -y install zabbix-java-gateway
#启动
systemctl start zabbix-java-gateway
#开机启动
systemctl enable zabbix-java-gateway
zabbix-java-gateway默认工作在10052端口
2.修改配置zabbix-java-gateway和zabbix-server的配置文件
1.这两个配置文件都在etc下面的zabbix里面
2.Java-gateway配置文件的START_POLLERS参数要>= zabbix_server配置文件的StartJavaPollers参数,这里建议一样,都设为5
vi /etc/zabbix/zabbix_java_gateway.conf
vi /etc/zabbix/zabbix_server.conf
zabbix_java_gateway.conf内容
(只需要更改三处即可注释部分)
# This is a configuration file for Zabbix Java Gateway.
# It is sourced by startup.sh and shutdown.sh scripts.
### Option: zabbix.listenIP
# IP address to listen on.
#
# Mandatory: no
# Default:
LISTEN_IP="0.0.0.0" #本机ip地址,如果和server安装在相同的位置可以不修改
### Option: zabbix.listenPort
# Port to listen on.
#
# Mandatory: no
# Range: 1024-32767
# Default:
LISTEN_PORT=10052 #端口可以修改为其他,在server端需要相同的配置
### Option: zabbix.pidFile
# Name of PID file.
# If omitted, Zabbix Java Gateway is started as a console application.
#
# Mandatory: no
# Default:
# PID_FILE=
PID_FILE="/var/run/zabbix/zabbix_java.pid"
### Option: zabbix.startPollers
# Number of worker threads to start.
#
# Mandatory: no
# Range: 1-1000
# Default:
START_POLLERS=5 #设置启动多个线程,这里和server段相同
### Option: zabbix.timeout
# How long to wait for network operations.
#
# Mandatory: no
# Range: 1-30
# Default:
TIMEOUT=3
zabbix_server.conf内容
配置此文件是为了让zabbix-server服务能连接到zabbix-java-gateway服务
(只需要更改三处即可注释部分)
### Option: JavaGateway
# IP address (or hostname) of Zabbix Java gateway.
# Only required if Java pollers are started.
#
# Mandatory: no
# Default:
JavaGateway=127.0.0.1 #如果是本机安装直接使用127.0.0.1
### Option: JavaGatewayPort
# Port that Zabbix Java gateway listens on.
#
# Mandatory: no
# Range: 1024-32767
# Default:
JavaGatewayPort=10052 #与上面javagateway配置端口一致
### Option: StartJavaPollers
# Number of pre-forked instances of Java pollers.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartJavaPollers=5 #与上面配置端口一致,线程数和客户端配置对应 不能少于客户端数目
3.这里我们配置好之后需要重启zabbix-server和zabbix-java-gateway服务
systemctl restart zabbix-server
systemctl restart zabbix-java-gateway
这样我们的服务器端就配置完成!
二、zabbix客户端配置(Tomcat所在机器)
这里分为两部分一部分是Linux的,一部分为Window的
Linux端tomcat
1.首先我们需要进入到tomcat的bin文件夹修改配置文件catalina.sh去添加tomact中JMX的参数
(注意添加的位置在#!/bin/sh下面)
#!/bin/sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=12345
-Djava.rmi.server.hostname=192.168.43.31"
查看12345端口监听情况:netstat -antlp|grep 12345
2.添加好之后,我们需要去下载一个包到tomcat的lib包中
进入到tomcat的lib文件夹中执行下面的命令
wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/extras/catalina-jmx-remote.jar
要找到对应tomcat版本的catalina-jmx-remote.jar。访问tomcat各个版本网站,从上面一直找下去。catalina-jmx-remote.jar文件在tomcat版本的/bin/extras/目录下,只要替换wget后面url即可。
3.重启tomcat,执行命令
./shutdown.sh
./startup.sh
4.这样其实就已经完成了,但是我们需要测试一下是否能获取到tomcat的状态
这里需要一个jar包(cmdline-jmxclient-0.10.3.jar),下载好之后上传到tomcat下面
java -jar /usr/local/tomcat/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
测试成功的结果
[root@localhost /]# java -jar /usr/local/apache-tomcat-8.5.43/lib/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
08/27/2019 06:10:27 -0400 org.archive.jmx.Client HeapMemoryUsage:
committed: 107479040
init: 62914560
max: 883949568
used: 51423792
5.然后我们需要去界面添加主机
红框内填写tomcat所在主机地址,端口即为上面tomcat配置的端口
6.给此主机添加tomcat的模板即可完成对linux下tomcat的监控!
(注意zabbix的主机不添加模板颜色是不会变绿色的,所以添加完主机之后不要期待会变绿色,要去加模板!要去加模板!要去加模板!)
window端tomcat
1.和linux一样,我们需要进入tomcat修改配置文件去添加tomact中JMX的参数
进入到bin目录下的catalin.bat
2.搜索set “CURRENT_DIR=%cd%”,在其下面加入下面的内容
set "CURRENT_DIR=%cd%"
set JAVA_OPTS= -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.4.137
3.添加好之后,我们需要去下载一个包到tomcat的lib包中,这里提供下载链接
http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.92/bin/extras/catalina-jmx-remote.jar
要找到对应tomcat版本的catalina-jmx-remote.jar。访问tomcat各个版本网站,从上面一直找下去。catalina-jmx-remote.jar文件在tomcat版本的/bin/extras/目录下,只要替换wget后面url即可。
4.重启tomcat即可!