温馨提示×

weblogic在centos上的性能监控如何实现

小樊
44
2025-12-23 17:08:36
栏目: 智能运维

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:部署 PrometheusGrafana,使用 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 等待)。
    • 内存:可用内存接近 0swap 持续增长,需排查泄漏或调大堆/连接池。
    • I/O:await、svctm 明显升高,关注磁盘/数据库瓶颈。
    • 网络:TIME_WAIT 过多或丢包,检查连接复用与内核参数。
    • WebLogic 重点:
      • 执行队列 PendingRequestCurrentCount > 0 持续存在且 OldestPending 增长,说明线程不足或下游慢。
      • JDBC WaitingForConnectionCurrentCount > 0WaitSecondsHighCount 偏高,说明连接池偏小或数据库慢。
      • HeapFreeCurrent/HeapSizeCurrent 长期低位,结合 GC 日志判断是否需要调优堆与 GC 策略。

0