Zabbix3.2.6之通过JMX监控Tomcat

简介:

参考博文:http://blog.51cto.com/wzlinux/1692444

JMX的全称是Java Management Extensions,即Java管理扩展。Java程序会开放一些端口,用来获取运行状况。在Zabbix 1.8以前,只能使用Zapcat来监控JMX,并需要修改源代码来支持,非常麻烦。另一种方法是使用jmx-cmd-client,他的作用是从命令行去获取JMX信息,可以在它的上层包装一个程序,用来获取JMX数据。
从Zabbix 2.0开始,内置了监控JMX的功能,叫做“Zabbix Java Gateway”,在Zabbix Server和Zabbix Proxy上启动名为“Zabbix Java Gateway”的进程,当需要获取JMX数据时,Zabbix Server会“问”JMX Gateway,然后JMX Gateway根据JMX管理API去查询需要的数据。在使用时,Java程序不需要在代码中新增任何东西,只需要在启动的时候加上一些JVM参数,使得它可以支持使用端口监控JMX。
wKiom1loJDSiVsf-AACrrkazRAg707.jpg
一、Server端安装配置JDK

rpm -ivh jdk-8u45-linux-x64.rpm

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
系统配置立即生效

source /etc/profile.d/java.sh

查看JAVA版本

java -version

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
二、Zabbix Server的编译
1、编译zabbix的时候需要添加参数--enable-java
2、备份zabbix_server.conf和zabbix_agentd.conf文件,重新编译安装zabbix
cd zabbix-3.2.6

./configure \
--prefix=/usr/local/zabbix \
--sysconfdir=/etc/zabbix \
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-ssh2 \
--with-openssl \
--enable-java
请自行查阅解决依赖关系。
三、Java gateway的配置
1、修改zabbix_java相关选项
zabbix_java的目录结构如下

zabbix_java/
├── bin
│ └── zabbix-java-gateway-3.2.6.jar
├── lib
│ ├── android-json-4.3_r3.1.jar
│ ├── logback-classic-0.9.27.jar
│ ├── logback-console.xml
│ ├── logback-core-0.9.27.jar
│ ├── logback.xml
│ └── slf4j-api-1.6.1.jar
├── settings.sh
├── shutdown.sh
└── startup.sh
设定java gateway的监听端口以及进程个数

cd /usr/local/zabbix/sbin/zabbix_java/

vim settings.sh

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/tmp/zabbix_java.pid"
START_POLLERS=5
其中 LISTEN_PORT 和 LISTEN_IP 可以不配置,zabbix_java 会采用默认值。但是 PID_FILE 和 START_POLLERS 必须配置,尤其主意 START_POLLERS,若不配置 zabbix_java 依旧可以启动但是是不工作的。
2、修改zabbix_server文件
既然java gateway运行了,你要告诉zabbix server去×××java gateway,在配置文件中开启如下几项参数。

JavaGateway=127.0.0.1
JavaGatewayPort=10052 #和上面的LISTEN_PORT一样
StartJavaPollers=3 #这个数值要小于上面的START_POLLERS
这三项都需要配置,其中StartJavaPollers会被视为开关性质的参数。0或者未配置将被系统认为不具有Java信息抓取能力。这点在Zabbix JMX Monitoring Wiki中未提及,但是实际效果就是这样。同时Zabbix Proxy的配置文件解析中也有介绍此参数的含义。
3、启动zabbix_java
找到zabbix_java目录路径,然后执行命令./startup.sh,并重启zabbix server。

自此Server端已经配置完成,下面配置Agent端的设定。

四、Agent端配置
1、修改tomcat/bin/catalina.sh文件
修改catalina.sh文件,添加
CATALINA_OPTS="-Xms1024m -Xmx1024m 
-XX:NewRatio=4 
-XX:PermSize=192m 
-XX:MaxPermSize=192m 
-Xss256k 
-XX:SurvivorRatio=4
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false #不进行验证
-Dcom.sun.management.jmxremote.port=12345 #jmx远程监控端口
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=10.0.1.13" #10.0.0.15是Agent的本地IP
就这种方式而言,需要注意的是catalina.sh中提供的默认变量名JAVA_OPTS和CATALINA_OPTS。由于JAVA_OPTS所添加的参数会在tomcat开启和关闭时都运行,所以如果你把 -Dcom.sun.management.jmxremote.port=12345写在JAVA_OPTS中,就会在关闭tomcat时出现如下错误,从而无法关闭。
Error: Exception thrown by the agent : java.rmi.server.ExportException : Port
already in use: 12345;nested exception is:
java.net.BindException: Address already in use: JVM_Bind
而CATALINA_OPTS只会在开启tomcat的时候运行,所以应该将这些配置写在CATALINA_OPTS中。

五、服务器端自定义监控项
Java gateway已经运行,Zabbix Server也知道去×××它,Agent Tomcat在启动的时候也支持了JMX远程监控,那下面我们就改进行一下WEB页面的设定了。
1、添加主机的地方填写如下
wKioL1lnOoORA0nbAAD4IUKDHkE543.jpg
wKiom1lnOoORR1zKAAC6xTGxl9w527.jpg
2、我们切换到Items可以自定义要监控的key
wKiom1lnOqexFqdwAADuk1D9B3U919.jpg
3、配置OK状态
wKioL1lnPMDjEKz9AACm_FQ_M8M880.jpg
4、导入自定义模板
zabbix自带的JMX监控tomcat的参数比较少,而且感觉监控的数值意义不是很大,我再附件上传了我使用的自定义JVM一些参数的模板,大家可以直接导入使用,效果如下。
wKioL1lnQeODBwcjAAEzIMH2nBM687.jpg
wKioL1lnQebD-s0xAAIWccJqqOc571.jpg

官方还有很多key我们没有设定,可以查看下面的参考官方地址。然后自定义更多的监控参数。

参考文档:
https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/jmx_monitoring
https://www.zabbix.com/documentation/3.2/manual/concepts/java
http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html
如果想详细理解,搭建请看上面的官方文档讲解。



     本文转自1321385590 51CTO博客,原文链接:http://blog.51cto.com/linux10000/2063514,如需转载请自行联系原作者




相关文章
|
6月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
3月前
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
16天前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
55 7
|
1月前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
【10月更文挑战第5天】随着OceanBase社区版的广泛应用,企业纷纷采用这一高性能、高可用的分布式数据库系统。为了确保系统的稳定运行,使用成熟的Zabbix监控工具进行全面监控至关重要。本文通过具体示例介绍了如何配置Zabbix监控OceanBase,包括安装配置、创建监控模板和监控项、编写脚本、设置触发器及图形展示等步骤,帮助读者快速上手,及时发现并解决问题,确保业务始终处于最佳状态。
53 2
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
55 2
zabbix agent集成percona监控MySQL的插件实战案例
|
4月前
|
监控 安全 Java
使用JMX监控Tomcat
【7月更文挑战第18天】
|
3月前
|
SQL 监控 分布式数据库
【解锁数据库监控的神秘力量!】OceanBase社区版与Zabbix的完美邂逅 —— 揭秘分布式数据库监控的终极奥秘!
【8月更文挑战第7天】随着OceanBase社区版的普及,企业广泛采用这一高性能、高可用的分布式数据库。为保障系统稳定,使用成熟的Zabbix监控工具对其进行全方位监控至关重要。本文通过实例介绍如何在Zabbix中配置监控OceanBase的方法,包括创建监控模板、添加监控项(如TPS)、设置触发器及图形展示,并提供示例脚本帮助快速上手。通过这些步骤,可以有效监控OceanBase状态,确保业务连续性。
103 0
|
5月前
|
监控 数据库 Docker
Zabbix监控神通数据库教程
**摘要:** 本文介绍了如何使用Docker安装和配置神舟通用数据库,并利用Zabbix进行监控。首先,通过Docker安装数据库镜像,启动容器并映射端口。接着,使用默认凭证连接数据库并验证安装。然后,将数据库的Python模块和库文件复制到主机,并安装Python3.5及相应模块,创建外部检查脚本以实现Zabbix的监控功能。示例展示了查询数据库版本的监控指标配置。最后,提到了监控结果的界面展示,并邀请读者探索更多Zabbix监控技巧。
86 0
Zabbix监控神通数据库教程
|
5月前
|
监控 Java 应用服务中间件
详解tomcat中的jmx监控
详解tomcat中的jmx监控
143 1
|
4月前
|
监控 关系型数据库 应用服务中间件
Linux zabbix监控 软件的安装
Linux zabbix监控 软件的安装