监控 Linux 上的 WebLogic 运行状态
一 常用监控方式与适用场景
二 快速上手步骤
cd $DOMAIN_HOME/bin;2) 启动 WLST:./wlst.sh;3) 连接管理端:connect("weblogic","password","t3://<IP>:7001");4) 查看运行时:serverRuntime(),进一步可 cd('ServerRuntimes/<Server>') 后 ls() 浏览 MBean 属性。jconsole,选择“远程”,输入 三 关键监控指标与阈值建议
| 维度 | 关键指标 | 建议阈值或关注点 |
|---|---|---|
| 实例状态 | State、Health | 期望 RUNNING / HEALTH_OK;出现 HEALTH_CRITICAL/UNKNOWN 需立即排查 |
| JVM | Heap/Memory Usage、GC 频率与耗时 | 堆使用长期接近上限或频繁 Full GC 需优化;可结合控制台触发 GC 观察回收效果 |
| 线程池 | IdleThreads、QueueLength、Stuck Threads | IdleThreads 不应长期为 0;QueueLength 持续高位或 Stuck 线程出现,说明存在阻塞/慢请求 |
| 连接与套接字 | OpenSocketsCurrentCount | 超过经验阈值(如 200,需结合基线)提示连接压力或泄漏风险 |
| JDBC | ActiveConnectionsCurrentCount、WaitSecondsHighCount | 活跃连接接近最大或等待次数升高,检查连接池配置与慢 SQL |
| 应用可用性 | 部署状态、响应时延 | 应用未 Active、频繁 5xx/超时,需联动业务日志与线程栈分析 |
| 以上指标可在控制台、WLST、JConsole 或企业监控平台获取;线程与内存的细项可在控制台 Monitoring → Performance 观察。 |
四 自动化巡检与告警示例
#!/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” 触发告警)。五 安全与排错要点
authenticate=false/ssl=false;仅开放必要端口(如 7001/T3、9000/JMX),并限制来源 IP。netstat -an | grep <端口> 检查监听。