温馨提示×

centos环境weblogic监控怎么做

小樊
38
2025-12-05 22:37:22
栏目: 智能运维

CentOS 环境下 WebLogic 监控实践

一 监控方案总览

  • 管理控制台:登录 http://:7001/console,在 Servers -> -> Monitoring -> Performance 查看 JVM 堆/非堆、线程、执行队列、JDBC 连接池 等核心指标,适合日常巡检与快速定位。
  • JMX + 客户端:启用 JMX,用 JConsole/VisualVM 直连或通过 WLST 脚本采集 MBean 指标,适合临时排查与批量采集。
  • Prometheus + Grafana:部署 weblogic-monitoring-exporter 暴露 REST/指标,由 Prometheus 抓取、Grafana 可视化,适合长期趋势与告警。
  • 企业级 APM:如 Oracle Enterprise Manager Cloud Control (OEMC)、IBM APM 等,适合大规模、多集群统一监控与治理。

二 快速上手步骤

  • 控制台巡检
    1. 登录控制台,进入 Servers -> -> Monitoring -> Performance,关注 Heap/Non-Heap、Threads、Execute Threads、JDBC Connection Pools 等关键面板。
    2. Deployments -> -> Monitoring 查看应用级吞吐与错误。
  • JMX + JConsole/VisualVM
    1. $DOMAIN_HOME/bin/setDomainEnv.sh 增加(示例端口 9000):
      -Dcom.sun.management.jmxremote.port=9000
      -Dcom.sun.management.jmxremote.authenticate=false
      -Dcom.sun.management.jmxremote.ssl=false
      注:为安全起见,生产环境应启用认证与 SSL
    2. 重启 Admin/受管 Server,用本地 jconsole 选择“远程”,连接 :9000
    3. 也可用 WLST 脚本连接 t3://:7001 查询 ServerRuntimeMBeanHealthState 等。
  • Prometheus + Grafana
    1. 部署 weblogic-monitoring-exporter,配置 WLST/REST 连接串与采集白名单。
    2. Prometheus 配置 job 抓取 /metrics,Grafana 导入 WebLogic 仪表盘展示 JVM、线程、连接池、请求 等指标。

三 关键指标与告警阈值建议

维度 关键指标 建议阈值/动作
JVM Heap/Meta/Direct 使用、GC 次数/时间 堆使用持续 > 80% 触发扩容或 GC 调优;Full GC 频繁或单次 > 1s 需排查对象生命周期与引用
线程池 空闲线程、执行线程、等待队列长度 等待队列持续增长或空闲线程接近 0 时扩容线程或优化慢 SQL/外部依赖
JDBC 活跃/最大连接、等待线程、泄漏检测 活跃连接长期接近最大或等待线程 > 0 时增大连接池或优化 SQL/索引
请求/响应 吞吐、错误率、响应时间 P95/P99 错误率 > 1% 或 P95 突增 触发告警并定位瓶颈
主机资源 CPU、内存、磁盘 IO、文件句柄 CPU > 80% 持续、可用内存低、IO 等待高、句柄用尽均需处置(应用/系统侧)

四 安全与连通性要点

  • 启用 JMX 认证与 SSL:生产环境务必设置用户名/口令与证书,避免开放明文端口。
  • 防火墙与监听:开放 7001/7002(管理/IIOP/SSL)、9000(JMX)等端口,仅放通监控网段。
  • 最小权限:为监控创建 Monitors 组 用户,仅授予必要 JMX 只读权限。
  • 主机解析:确保 /etc/hosts 与 DNS 正确解析 主机名 <-> IP,避免 JMX/RMI 连接异常。
  • 合规审计:记录监控账号操作与指标访问日志,定期轮换口令与证书。

五 自动化巡检脚本示例 WLST

# monitor.py
import sys
from weblogic.management.scripting import WLST

def usage():
    print("Usage: java weblogic.WLST monitor.py <url> <user> <password>")

if len(sys.argv) != 4:
    usage()
    sys.exit(1)

url, user, pwd = sys.argv[1], sys.argv[2], sys.argv[3]

try:
    connect(user, pwd, url)
    cd('Servers')
    for s in ls('ServerRuntimes'):
        cd('ServerRuntimes/' + s)
        name = get('Name')
        state = get('State')
        health = get('HealthState')
        print(f"{name:20} State={state:8} Health={str(health)}")
        cd('../..')
    disconnect()
except Exception as e:
    print("ERROR:", str(e))
    sys.exit(2)
  • 用法示例:
    • 交互:java weblogic.WLST monitor.py
    • 传参:java weblogic.WLST monitor.py t3://192.168.1.10:7001 weblogic Welcome1
  • 可扩展采集 ExecuteThreadTotalCount、ExecuteThreadsIdle、JDBCConnectionPoolRuntime 等 MBean 属性,接入 Zabbix/Nagios/Prometheus Pushgateway

0