简言

工作中我们的服务器运行着很多项目,有一些是运行在tomcat上面的,所以我们可以监控tomcat的状态,来及时的查看项目运行的正常状态!

看图理解原理

zabbix怎么监控别的网段服务器 zabbix如何监控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端口

zabbix怎么监控别的网段服务器 zabbix如何监控tomcat_zabbix怎么监控别的网段服务器_02


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

zabbix怎么监控别的网段服务器 zabbix如何监控tomcat_java_03


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配置的端口

zabbix怎么监控别的网段服务器 zabbix如何监控tomcat_zabbix怎么监控别的网段服务器_04

6.给此主机添加tomcat的模板即可完成对linux下tomcat的监控!

(注意zabbix的主机不添加模板颜色是不会变绿色的,所以添加完主机之后不要期待会变绿色,要去加模板!要去加模板!要去加模板!)

zabbix怎么监控别的网段服务器 zabbix如何监控tomcat_java_05


window端tomcat

1.和linux一样,我们需要进入tomcat修改配置文件去添加tomact中JMX的参数

进入到bin目录下的catalin.bat

zabbix怎么监控别的网段服务器 zabbix如何监控tomcat_jar_06


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即可。

zabbix怎么监控别的网段服务器 zabbix如何监控tomcat_jar_07


4.重启tomcat即可!