linux

Linux系统如何监控WebLogic

小樊
41
2025-10-29 04:55:49
栏目: 智能运维

1. 使用WebLogic自带管理控制台
WebLogic管理控制台是内置的图形化管理工具,可通过浏览器直接访问(默认地址为http://<weblogic-server-ip>:7001/console),无需额外安装软件。登录后,导航至Servers目标服务器名称MonitoringPerformance,可实时查看CPU使用率、内存占用、线程池状态(活跃线程数、等待队列长度)、JDBC连接池使用率等核心指标。此外,还可进入ConfigurationMonitoringAlerts设置阈值报警(如线程数超过100时触发邮件通知)。这种方法适合快速查看基础状态,无需复杂配置。

2. 配置JMX远程监控
JMX(Java Management Extensions)是Java平台的标准监控接口,支持远程采集WebLogic的性能数据。首先编辑WebLogic域目录下的bin/setDomainEnv.sh文件,添加以下JMX配置:

JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

重启WebLogic使配置生效。随后可使用JConsole(JDK自带工具,路径为$JAVA_HOME/bin/jconsole)或VisualVM连接:在“远程”选项卡输入<weblogic-server-ip>:9000,无需认证即可查看内存、线程、类加载等详细指标。JMX适合需要深度监控的运维人员,也是第三方工具(如Prometheus)的数据源基础。

3. 利用WLST脚本监控
WLST(WebLogic Scripting Tool)是基于Jython的命令行工具,可实现监控任务的自动化与脚本化。以下是一个示例脚本,用于检查WebLogic实例的运行状态、健康状态和打开套接字数:

#!/bin/bash
# 设置环境变量
export CLASSPATH=/opt/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar:$CLASSPATH
export PATH=/usr/java/jdk1.8.0_291/bin:$PATH

# 连接到WebLogic服务器
java weblogic.Admin -url t3://localhost:7001 -username weblogic -password welcome1 <<EOF
# 获取ServerRuntimeMBean
serverRuntime = cmo.getServerRuntime()
# 检查运行状态
state = serverRuntime.getState()
print "Server Running Status: " + state
# 检查健康状态
health = serverRuntime.getHealthState()
print "Server Health Status: " + health.getName()
# 获取打开套接字数
sockets = serverRuntime.getOpenSocketsCurrentCount()
max_sockets = 200
if int(sockets) > max_sockets:
    print "Warning: Open sockets ($sockets) exceed threshold ($max_sockets)"
exit
EOF

将脚本保存为monitor_weblogic.sh,通过crontab -e设置定时任务(如每5分钟运行一次),可实现自动化监控。WLST适合需要自定义监控逻辑的场景。

4. 使用第三方监控工具
第三方工具可实现集中化、可视化监控,适合大规模环境:

5. 编写Shell脚本监控
通过Shell脚本调用WebLogic命令行工具(如weblogic.Admin)或检查进程状态,实现轻量级监控。以下是一个示例脚本,用于检查WebLogic实例是否运行及端口是否监听:

#!/bin/bash
# 检查WebLogic进程是否存在
if ! ps -ef | grep "weblogic.Server" | grep -v grep; then
    echo "WebLogic process is not running!" | mail -s "WebLogic Alert" admin@example.com
    exit 1
fi

# 检查管理端口是否监听
if ! netstat -tuln | grep ":7001" > /dev/null; then
    echo "WebLogic management port (7001) is not listening!" | mail -s "WebLogic Alert" admin@example.com
    exit 1
fi

echo "WebLogic is running normally."

将脚本添加到crontab(如每分钟运行一次),可实现基础的进程和端口监控,适合资源有限的场景。

0
看了该问题的人还看了