Zabbix监控Tomcat单实例(JMX)

1. 服务器端

1.1 Zabbix-java-gateway安装

JMX监控原理图:

tomcat监控原理图

  • 安装zabbix-java-gateway
    如果是安装在zabbix-server服务器上面,可以在编译时候,增加--enable-java,安装以后会在安装文档下的sbin下发现zabbix-java-gateway启动文件和配置文件。
    ./configure --prefix=/usr/local/zabbix-3.0.3/ --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
  • Yum安装
配置yum源:
rpm -ihv http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
[root@localhost ~]# yum list |grep zabbix-java
zabbix-java-gateway.x86_64    3.0.14-1.el6                zabbix 
[root@localhost ~]# yum install -y zabbix-java-gateway
[root@localhost ~]# service zabbix-java-gateway start
Starting zabbix java gateway:                              [确定]

特别说明:
在一个监控系统只有一个zabbix-java-gateway,可以部署在zabbix-sever端也可以部署在其他机器上,需要和zabbix-server网络可达。因为如果tomcat开启远程JMX存在安全隐患,因此在全外网情况下不建议直接开启。

1.2配置文件(zabbix_server.conf和zabbix_java_gateway.conf)

  • 配置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:
### 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 #线程数和客户端配置对应 不能少于客户端数目

2. 客户端

2.1 Tomcat配置

开启JMX:
在Tomcat path/bin/catalina.sh增加如下内容:
CATALINA_OPTS="-Dcom.sun.management.jmxremote #(开启jmx远程)
-Dcom.sun.management.jmxremote.authenticate=false #(不认证)
-Dcom.sun.management.jmxremote.ssl=false #(不使用ssl)
-Dcom.sun.management.jmxremote.port=12345 #(端口号)
-Djava.rmi.server.hostname=192.168.199.35" #(开启主机名这里直接使用ip地址)

特别说明:

  1. 如果是内网监控并且主机没有开启防火墙上述设置没有问题开启后也可以正常访问。Jconsole或者jvisualvm连接测试下。(这两个java远程测试工具后面还会用到)


    JMX监控
  2. 如果是需要开启本机防火墙或者需要通过防火墙设备连接外网,这个设置就无法满足要求。或报jmx:rmi无法连接的错误。经过查询发现因为开启JMX会随机生成两个端口,jmx:rmi连接需要使用到另外两个端口,因为是随机每次启动都会改变因此无法设置防火墙。
    解决方案1:(只能解决本机防火墙开启的问题)
    在Tomcat官方下载:JMX Remote jar 。在找到对应版本,放到Tomcat文件夹下的lib目录下。
    下载
去掉-Dcom.sun.management.jmxremote.port=12345 #(端口号)这行。
在server.xml中增加如下内容:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"  
          rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346" />
设置两个端口号,并且设置好防火墙。在远程连接正常啦。如果使用的是云主机,并且是1对1绑定外网ip地址,如下ip需要设置为外网的地址。
-Djava.rmi.server.hostname=外网ip"

但是如果使用的是防火墙设备和内网服务器,无法直接使用外网ip监控

2.2 web配置

添加比较简单,填写主机信息


web 设置

增加监控模版:


增加模版

特别注意:这里需要下面指示框输入关键字,需要点击添加,在点击更新。如果是第一次添加下面的更新按钮是也是添加。前面agent也是根据需要添加。添加了两个 CustomTomcat和Template JMX Generic两个(因为有些监控项自动的没有)

2.3 监控模版(修改)

由于Tomcat监控项比较特殊,比如每次设置端口不一样,会导致监控项监控不到。不同版本的Tomcat监控项名称也不同,因此需要修改监控模版。如何获取主机监控项呢?使用Jconsole或者jvisualvm来查看监控项名称。

监控项查看

监控项的值

监控模版

所有的监控项都在上面可以找到,找到你需要监控项,在右边可以看到监控项内容,监控项这里填写的就是上面那个图中右边的位置,后面监控项的值
类-总计 jmx["java.lang:type=ClassLoading","TotalLoadedClassCount"]这个监控项就是下面这个位置。
监控值

根据自己的Tomcat配置对应的监控项就可以了。网上流传的通用模版和系统自带模版,都无法完美的匹配Tomcat,自己写手动配置。例如下面是我两台相同配置的服务器可以看到最后两个不一样。

1
2
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容