WebLogic 在 CentOS 上的性能监控实现
一 监控方案总览
- 管理控制台与 WLST:通过 WebLogic 管理控制台查看 JVM 内存、线程、执行队列、JDBC 连接池等;用 WLST 脚本化采集与巡检,适合日常与批量场景。
- JMX 直连:启用 JMX 后用 JConsole/VisualVM 远程连接,实时查看 MBeans 指标与线程、内存、类加载等。
- 第三方监控:使用 Prometheus + Grafana(配合 weblogic-monitoring-exporter 暴露指标)、Zabbix(自定义脚本/模板)、或 Applications Manager 做可视化与告警。
- 系统级监控:在 CentOS 上用 top/vmstat/iostat/netstat/free/df/uptime 观察 CPU、内存、I/O、网络与磁盘空间,作为 JVM 与应用之上的一层健康面。
二 快速上手 JMX 与 JConsole
- 开启 JMX(示例为域目录 $DOMAIN_HOME):编辑 $DOMAIN_HOME/bin/setDomainEnv.sh,在 JAVA_OPTIONS 中追加(示例端口 9000):
-Dcom.sun.management.jmxremote.port=9000
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
提示:生产环境请开启认证与 SSL,并使用独立受限账号与端口。
- 主机解析与防火墙:确保主机名可解析(必要时在 /etc/hosts 正确映射),并放行 9000/tcp(firewalld/iptables)。
- 启动与验证:重启 WebLogic,执行
netstat -an | grep 9000 确认监听。
- 本地连接:在本地 JDK/bin/jconsole 选择“远程”,输入 服务器IP:9000 连接并查看 内存、线程、MBeans 等。
三 WLST 脚本化采集关键指标
- 连接与巡检示例(t3 协议,按实际地址与凭据修改):
connect('weblogic','welcome1','t3://localhost:7001')
serverRT = cmo.getServerRuntime()
print('Health:', serverRT.getHealthState())
# 执行队列(ExecuteQueueRuntime)
for q in serverRT.getExecuteQueueRuntimes():
print('Queue:', q.getName(),
'IdleThreads:', q.getExecuteThreadCurrentIdleCount(),
'Pending:', q.getPendingRequestCurrentCount(),
'OldestPending(ms):', q.getPendingRequestOldestTime())
# JDBC 连接池(JDBCConnectionPoolRuntime)
for ds in serverRT.getJDBCDataSourceRuntimeMBeans():
pools = ds.getJDBCConnectionPoolRuntimeMBeans()
for p in pools:
print('JDBC Pool:', p.getName(),
'Active:', p.getActiveConnectionsCurrentCount(),
'Waiting:', p.getWaitingForConnectionCurrentCount(),
'MaxWait(sec):', p.getWaitSecondsHighCount())
disconnect()
- 常用 MBean 指标要点:
- JVMRuntime:HeapSizeCurrent、HeapFreeCurrent(堆使用)。
- ExecuteQueueRuntime:ExecuteThreadCurrentIdleCount、PendingRequestCurrentCount、PendingRequestOldestTime(线程与队列瓶颈)。
- JDBCConnectionPoolRuntime:ActiveConnectionsCurrentCount、WaitingForConnectionCurrentCount、WaitSecondsHighCount、MaxCapacity(连接池争用)。
四 Prometheus Grafana 与 Zabbix 集成
- Prometheus + Grafana:部署 Prometheus 与 Grafana,使用 weblogic-monitoring-exporter 通过 REST 暴露 WebLogic MBean 指标,Prometheus 抓取后在 Grafana 做可视化与阈值告警。
- Zabbix:在 Zabbix 中新增主机,结合 UserParameter 执行 WLST/脚本采集 WebLogic 指标,或通过 HTTP 采集 exporter 指标;配置触发器与告警媒介实现主动通知。
五 系统级监控与告警阈值建议
- 基础命令与频率:在 CentOS 上以 1–5 秒间隔观察 top/vmstat 1 5/iostat 1 5/netstat -tulnp/free -h/df -h/uptime,覆盖 CPU、内存、I/O、网络与磁盘空间。
- 关键阈值与含义:
- CPU 负载:持续高于 CPU 核数 表示过载;关注 wa(I/O 等待)。
- 内存:可用内存接近 0 或 swap 持续增长,需排查泄漏或调大堆/连接池。
- I/O:await、svctm 明显升高,关注磁盘/数据库瓶颈。
- 网络:TIME_WAIT 过多或丢包,检查连接复用与内核参数。
- WebLogic 重点:
- 执行队列 PendingRequestCurrentCount > 0 持续存在且 OldestPending 增长,说明线程不足或下游慢。
- JDBC WaitingForConnectionCurrentCount > 0 或 WaitSecondsHighCount 偏高,说明连接池偏小或数据库慢。
- HeapFreeCurrent/HeapSizeCurrent 长期低位,结合 GC 日志判断是否需要调优堆与 GC 策略。