zabbix4.0学习三:Zabbix监控tomcat和java

zabbix4.0学习三:Zabbix监控tomcat和java

前言

想理解怎么监控tomcat,必需识下图(图片源出网络)
zabbix4.0学习三:Zabbix监控tomcat和java_第1张图片

  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设置的值。
  4. zabbix-java-gateway工作在10052端口,Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据。图中的12345端口是在配置tomcat时指定的,可是自定义。

在一个监控系统只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达。
Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据,zabbix-server只要向zabbix-java-gateway取数据添加到数据库即可

配置zabbix服务端

安装zabbix-java-gateway

#安装
yum -y install zabbix-java-gateway
#启动
systemctl start zabbix-java-gateway
#开机启动
systemctl enable zabbix-java-gateway

zabbix-java-gateway默认工作在10052端口

zabbix-server默认工作在10051端口,zabbix-agent默认工作在10050端口

配置zabbix_java_gateway.conf和zabbix_server.conf

2个文件都在/etc/zabbix下
重点:Java-gateway配置文件的START_POLLERS参数 >= zabbix_server配置文件的StartJavaPollers参数,建议一样,都设为5。

配置zabbix_java_gateway.cnf

# 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
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=192.168.199.63 #如果是本机安装直接使用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 #线程数和客户端配置对应 不能少于客户端数目

StartJavaPollers<=START_POLLERS

重启zabbix-server和zabbix-java-gateway服务

systemctl restart zabbix-server
systemctl restart zabbix-java-gateway

配置linux系统客户端

本例tomcat安装在linux系统上,稍后再写windows

配置上tomcat

添加tomact中JMX的参数

打开tomcat/bin/catalina.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=127.0.0.1"

注意添加的位置在#!/bin/sh下面。
注意-Djava.rmi.server.hostname=192.168.2.32要加了,hostname填本机的ip地址,除非是127.0.0.1
查看12345端口监听情况:netstat -antlp|grep 12345

这里有一点提醒,打/etc/zabbix/zabbix_java_gateway.cnf,在文件有末尾有如下代码:

# uncomment to enable remote monitoring of the standard JMX objects on the Zabbix Java Gateway itself
#JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345
#       -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

取消注释后,zabbix_java_gateway本身就开启了JMX功能,就可能被远程监控。

添加catalina-jmx-remote.jar

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

重启tomcat

执行bin目录下shell脚本

./shutdown.sh
./startup.sh

检查防火墙状态

如果防火墙开启会报java.net.NoRouteToHostException: 没有到主机的路由
查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service

测试

下载cmdline-jmxclient-0.10.3.jar,百度网盘,提取码f37k。
测试

java -jar /usr/local/tomcat/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage

结果

[root@localhost bin]# java -jar /usr/local/tomcat/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
01/31/2019 09:38:50 +0800 org.archive.jmx.Client HeapMemoryUsage: 
committed: 247332864
init: 16777216
max: 247332864
used: 160725592

配置zabbix-web

打开界面,配置->主机->主机zabbix server(我的zabbix-java-gateway和zabbix-server安装在同一台虚拟机上)
找到JMX接口,配置如下,然后点击添加按钮
在这里插入图片描述
反过来看开头的那幅图,Zabbix-server通过JavaPollers进程调用zabbix-java-gateway获得tomcat数据,而zabbix-java-gateway就是通过这里配置的tomcat地址和端口,连接到tomcat从而获取到数据。
找到主机,如果JMX显示颜色,则配置成功。
在这里插入图片描述
注意,必需添加添加的tomcat的模板,如zabbix自带的Template App Apache Tomcat JMX或自定义的模板,后面JMX才能变绿,否则永远不亮
或者查看/var/log/zabbix/zabbix-server.log日志,出现enabling JMX agent checks on host “192.168.1.239”: host became available则表示能连接上。

跨域连接

两台不同的IP的设置和上面是一样的,只有在tomcat/bin/catalina.sh文件里hostname要写具体IP。
比如

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.1.239"

配置windows系统客户端

配置上tomcat

除了编辑catalina.bat外其它都一样。
windows系统上,如果是以服务方式启动tomcat,则12345是不会被监听的,必需以命令行启动tomcat。

添加tomact中JMX的参数

在tomcat/bin下找到catalina.bat文件,在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.2.32

注意Djava.rmi.server.hostname=192.168.2.32要加了,除非是127.0.0.1

添加catalina-jmx-remote.jar

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

重启tomcat

执行bin目录下shell脚本

./shutdown.bat
./startup.bat

zabbix自动发现多实例tomcat

我环境是centos7,zabbix-agent4.0。尝试了几天也没研究出来。主要在于zabbix执行远程命令权限问题,报各种问题,最终也没实现。当用zabbix用户执行时暂时行不能,如果换成root用户执行侵入性太大,还不如老老实实的按单实例监听tomcat呢,简单又方便。

你可能感兴趣的:(技术工具,阿里云,zabbix)