zabbix 使用JMX 监控tomcat

本文详细介绍了如何利用Java Management Extensions (JMX) 配置Zabbix监控Tomcat应用服务器。首先解释了JMX的概念,然后描述了在CentOS 6.5系统上安装Zabbix 2.4.6、JDK 8和Tomcat 8的过程。重点在于解决Zabbix Java Gateway的安装问题,并配置Zabbix Server连接到JMX Server。文章还提到了使用cmdline-jmxclient-0.10.3.jar进行调试,并最终在Zabbix监控面板添加JMX监控项。

JMX (Java Management Extensions),是java提供的一种管理接口,通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等。

百度百科介绍:JMX

zabbix监控机 :os -------cent6.5 x64

                            zabbix------2.4.6 ,使用yum安装方式安装。

被监控机:        os--------cent6.5 x64

                            java-------

### 配置 Zabbix 监控 TomcatJMX 性能指标 要通过 Zabbix 监控 Tomcat 服务器的 JMX 性能指标,需要完成以下几个关键步骤: #### 1. 安装 Java 环境 Zabbix Java Gateway 是用于处理 JMX 监控请求的关键组件,因此必须在监控服务器上安装支持 JMXJava 环境。推荐使用 OpenJDK 或 Oracle JDK 1.8 及以上版本。 ```bash sudo apt update sudo apt install openjdk-8-jdk -y # Debian/Ubuntu # 或者 sudo yum install java-1.8.0-openjdk-devel -y # CentOS/RHEL ``` #### 2. 安装 Zabbix Server 和 Zabbix Java Gateway 确保在安装 Zabbix 时启用 Java Gateway 支持。以源码安装为例: ```bash ./configure --enable-server --with-mysql --enable-java --with-net-snmp --with-libcurl --with-ssh2 make sudo make install ``` 如果使用包管理器安装(如 Ubuntu): ```bash sudo apt install zabbix-server-mysql zabbix-java-gateway ``` #### 3. 修改 Zabbix Server 配置文件 编辑 `zabbix_server.conf` 文件,配置 Java Gateway 地址和端口: ```ini JavaGateway=127.0.0.1 JavaGatewayPort=10052 StartJavaPollers=5 ``` 保存并重启 Zabbix Server: ```bash sudo systemctl restart zabbix-server ``` #### 4. 配置 Tomcat 启用 JMX 远程监控Tomcat 的启动脚本中添加 JMX 远程连接参数。例如,在 `catalina.sh` 中找到 `JAVA_OPTS` 并添加以下内容: ```bash JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" ``` 确保防火墙允许访问 JMX 端口(如 12345),然后重启 Tomcat 服务。 #### 5. 配置 Zabbix Agent(可选) 虽然 JMX 是通过 Zabbix Java Gateway 直接采集的,但如果需要结合系统级指标(如内存、CPU 使用率等),则应在目标服务器上安装并配置 Zabbix Agent: ```bash sudo apt install zabbix-agent ``` 在 `/etc/zabbix/zabbix_agentd.conf` 中设置: ```ini ServerActive=ZABBIX_SERVER_IP Hostname=Tomcat_Hostname ``` #### 6.Zabbix Web 界面中添加主机并配置 JMX 接口 登录 Zabbix Web 管理界面,执行以下操作: - **添加主机**:选择“创建主机”,填写 Tomcat 服务器的 IP 地址。 - **设置 JMX 接口**:在“宏”选项卡中添加: ``` {$JMX.IP}=目标服务器IP {$JMX.PORT}=12345 ``` - **关联 JMX 监控模板**:例如 `Template App Apache Tomcat by JMX`,该模板包含常见的 JVM 指标如堆内存、线程数、GC 次数等。 #### 7. 测试 JMX 数据获取 可以手动测试是否能够从 Tomcat 获取 JMX 数据。使用 `cmdline-jmxclient` 工具进行测试: ```bash java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.100:12345 'Catalina:name="http-bio-8080",type=ThreadPool' maxThreads ``` 输出应类似如下内容: ``` 06/09/2017 17:34:47 +0800 org.archive.jmx.Client maxThreads: 200 ``` 若测试成功,则说明 JMX 连接正常,Zabbix 可以通过 Java Gateway 获取数据。 #### 8. 自定义 JMX 指标(可选) 如果默认模板不满足需求,可在 Zabbix 中自定义 JMX 查询项。例如,监控 Tomcat 的最大线程数: - **键值**:`jmx["Catalina<type=ThreadPool, name=\"http-bio-8080\"><>(maxThreads)"]` - **JMX URL**:`service:jmx:rmi:///jndi/rmi://{$JMX.IP}:{$JMX.PORT}/jmxrmi` 同样地,可以定义其他指标如当前线程数、堆内存使用情况等。 #### 9. 脚本化监控(可选) 为实现更复杂的监控逻辑,可编写脚本来调用 JMX 客户端并返回特定指标。例如,创建一个 shell 脚本 `jvm_memory.sh`: ```bash #!/bin/bash RESULT=$(java -jar /opt/cmdline-jmxclient-0.10.3.jar - $1:$2 'java.lang<type=Memory><>HeapMemoryUsage.used') echo $RESULT | awk '{print $4}' ``` 然后在 Zabbix Agent 中注册用户参数: ```ini UserParameter=jvm.memory.heap.used,/opt/zabbix/share/zabbix/alertscripts/jvm_memory.sh 127.0.0.1 12345 ``` 重启 Zabbix Agent 后即可在 Zabbix Server 中通过 `jvm.memory.heap.used` 获取指标。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值