如何使用Zabbix结合JMX监控WildFly的数据源连接?
Zabbix通过JMX监控WildFly数据库连接的实操步骤
1. 定位WildFly数据源的JMX MBean
WildFly的数据库连接池数据都封装在特定MBean中,你可以用JConsole或VisualVM连接到WildFly的JMX端口,找到路径类似jboss.as:subsystem=datasources,data-source=你的数据源名称的MBean,重点关注以下核心属性:
ActiveCount: 当前活跃的数据库连接数AvailableCount: 空闲可用的连接数MaxCount: 连接池允许的最大连接数CreatedCount: 累计创建的连接总数DestroyedCount: 累计销毁的连接总数
2. 配置Zabbix监控项
进入Zabbix对应主机的监控项页面,新建监控项,参数设置如下:
- 类型选择
JMX agent - 键值自定义,例如
jboss.ds.active[你的数据源名称] - JMX对象填写找到的MBean路径:
jboss.as:subsystem=datasources,data-source=你的数据源名称 - JMX属性填写要监控的目标属性,比如
ActiveCount - 数据类型选
Numeric (unsigned),更新间隔根据业务需求设置(推荐30秒)
按相同逻辑,为AvailableCount、MaxCount等其他关键属性创建独立监控项。
3. 设置告警触发器(可选)
为了在连接池异常时及时告警,可以配置触发器,比如:
- 当
ActiveCount等于MaxCount且持续5分钟,触发"连接池耗尽"告警 - 当
AvailableCount为0且持续3分钟,触发"无可用连接"告警
触发器表达式示例:
{你的主机名:jboss.ds.active[你的数据源名称].last()}=={你的主机名:jboss.ds.max[你的数据源名称].last()} and {你的主机名:jboss.ds.active[你的数据源名称].count(#5,1800)}=5
4. 验证配置有效性
- 使用Zabbix的"测试"功能,确认监控项能正常拉取数据
- 模拟数据库连接压力(比如用JMeter发起批量请求),观察监控数据是否同步变化
- 手动触发告警条件,验证触发器是否正常触发告警
关键注意事项
- 确保WildFly的JMX端口未被防火墙拦截,Zabbix服务器能正常访问(WildFly默认JMX端口通常为9990或9999,依版本而定)
- 数据源名称必须与WildFly配置文件(
standalone.xml/domain.xml)中<data-source name="XXX">的XXX完全一致 - 若WildFly采用域模式,MBean路径需增加服务器标识,格式为
jboss.as:server=你的服务器名,subsystem=datasources,data-source=你的数据源名称
内容的提问来源于stack exchange,提问作者user9187036
相关产品推荐
相关产品推荐

