温馨提示×

如何监控Linux WebLogic运行状态

小樊
40
2025-11-30 16:52:02
栏目: 智能运维

监控 Linux 上的 WebLogic 运行状态

一 常用监控方式与适用场景

  • WebLogic 管理控制台:登录 http://:7001/console,在“Servers → Monitoring”查看各实例的State、Health、线程、JVM、JDBC等关键指标,适合日常巡检与问题定位。
  • WLST 脚本:通过 $DOMAIN_HOME/bin/wlst.sh 连接 t3://:7001,执行 serverRuntime() 等命令,获取运行时 MBean 数据,适合自动化巡检与批量纳管。
  • JMX + JConsole:在 $DOMAIN_HOME/bin/setDomainEnv.sh 中开启 JMX(如端口 9000),用本地 jconsole 远程连接,图形化查看内存、线程、MBeans。
  • 企业级监控平台:如 Applications Manager、Nagios、Zabbix、Prometheus/Grafana,适合统一监控、告警与可视化。
  • 第三方监控代理:如 IBM Monitoring Agent for WebLogic,集中采集 JVM、JMS、JDBC 等指标,适合与 APM/ITM 体系联动。

二 快速上手步骤

  • 控制台巡检
    1. 访问 http://:7001/console 登录;2) 进入目标 Domain → Environment → Servers → → Monitoring,查看 State/Health、Thread、JVM、JDBC 等;3) 结合 logs//server.log、access.log 排查异常。
  • WLST 即时查看
    1. 登录服务器:cd $DOMAIN_HOME/bin;2) 启动 WLST:./wlst.sh;3) 连接管理端:connect("weblogic","password","t3://<IP>:7001");4) 查看运行时:serverRuntime(),进一步可 cd('ServerRuntimes/<Server>')ls() 浏览 MBean 属性。
  • JMX + JConsole 远程
    1. 编辑 $DOMAIN_HOME/bin/setDomainEnv.sh,追加:
      -Dcom.sun.management.jmxremote.port=9000
      -Dcom.sun.management.jmxremote.authenticate=false
      -Dcom.sun.management.jmxremote.ssl=false
      注:生产环境请启用认证与 SSL;2) 重启域;3) 本地执行 jconsole,选择“远程”,输入 :9000 连接并查看指标。

三 关键监控指标与阈值建议

维度 关键指标 建议阈值或关注点
实例状态 State、Health 期望 RUNNING / HEALTH_OK;出现 HEALTH_CRITICAL/UNKNOWN 需立即排查
JVM Heap/Memory Usage、GC 频率与耗时 堆使用长期接近上限或频繁 Full GC 需优化;可结合控制台触发 GC 观察回收效果
线程池 IdleThreads、QueueLength、Stuck Threads IdleThreads 不应长期为 0QueueLength 持续高位或 Stuck 线程出现,说明存在阻塞/慢请求
连接与套接字 OpenSocketsCurrentCount 超过经验阈值(如 200,需结合基线)提示连接压力或泄漏风险
JDBC ActiveConnectionsCurrentCount、WaitSecondsHighCount 活跃连接接近最大或等待次数升高,检查连接池配置与慢 SQL
应用可用性 部署状态、响应时延 应用未 Active、频繁 5xx/超时,需联动业务日志与线程栈分析
以上指标可在控制台、WLST、JConsole 或企业监控平台获取;线程与内存的细项可在控制台 Monitoring → Performance 观察。

四 自动化巡检与告警示例

  • Shell + WLST 巡检脚本(判断 State/Health 与套接字数)
    #!/usr/bin/env bash
    export JAVA_HOME=/usr/local/jdk/jdk1.8.0_251
    export PATH=$JAVA_HOME/bin:$PATH
    
    WL_HOME=/opt/weblogic/Oracle/Middleware/wlserver_12.2.1.4
    . $WL_HOME/server/bin/setWLSEnv.sh
    
    DOMAIN_HOME=/opt/weblogic/Oracle/Middleware/user_projects/domains/base_domain
    SERVER="AdminServer"
    ADMIN_URL="t3://127.0.0.1:7001"
    USER="weblogic"
    PASS="$WEBLOGIC_PASSWORD"   # 建议由环境变量注入
    
    OUT=$(java weblogic.WLST <<EOF
    connect('$USER','$PASS','$ADMIN_URL')
    serverRuntime()
    cd('ServerRuntimes/$SERVER')
    print('State=' + State)
    print('Health=' + HealthState)
    print('OpenSockets=' + OpenSocketsCurrentCount)
    exit()
    EOF
    )
    
    echo "$OUT"
    
    echo "$OUT" | grep -q "State=RUNNING" || { echo "CRIT: Server not RUNNING"; exit 2; }
    echo "$OUT" | grep -q "Health=HEALTH_OK" || { echo "WARN: Health not OK"; exit 1; }
    
    SOCKETS=$(echo "$OUT" | awk -F= '/OpenSockets=/ {print $2; exit}')
    if [ -n "$SOCKETS" ] && [ "$SOCKETS" -gt 200 ]; then
      echo "WARN: OpenSockets=$SOCKETS > 200"
      exit 1
    fi
    
    echo "OK: RUNNING HEALTH_OK OpenSockets=$SOCKETS"
    exit 0
    
    • 使用方式:将密码放入环境变量 WEBLOGIC_PASSWORD,通过 crontab 定时执行,并将输出接入 Zabbix/Nagios(如用 vfs.file.regmatch 匹配 “NO/CRIT” 触发告警)。
  • 企业监控集成
    • Zabbix:以脚本返回值或解析日志为监控项,配置触发器(如包含 “CRIT/WARN” 即告警)。
    • Nagios:将脚本定义为 check command,设置 OK/WARN/CRIT 阈值与依赖关系。
    • Prometheus/Grafana:通过 JMX Exporter 暴露 MBean,Grafana 面板展示 JVM/线程/JDBC 趋势。

五 安全与排错要点

  • 安全加固
    • JMX 远程:生产环境务必开启 认证与 SSL,避免使用示例中的 authenticate=false/ssl=false;仅开放必要端口(如 7001/T3、9000/JMX),并限制来源 IP。
    • 账号权限:为监控创建 最小权限 账号(如加入 Monitors 组),避免使用管理员账号。
  • 连通与排错
    • 确认 Listen Port/SSL Port 已启用;WLST 使用 t3:// 直连管理通道;JConsole 连接前用 netstat -an | grep <端口> 检查监听。
    • 无法获取数据时,优先检查 网络/防火墙、监听端口、JMX 配置WebLogic 日志;第三方代理需查看 /opt/ibm/apm/agent/logs 等日志定位连接与采集问题。

0