监控Linux环境下WebLogic的运行状态需结合实时性、全面性、自动化需求,选择合适的方法。以下是常用且有效的监控方案,涵盖图形化、命令行、脚本及第三方工具等多种类型:
WebLogic提供了图形化管理控制台和命令行工具,适合快速查看基础状态:
http://<WebLogic服务器IP>:<管理端口>/console(默认管理端口为7001),登录后可查看服务器实例状态(运行/停止/挂起)、部署应用状态、JDBC连接池健康度、线程池使用情况等。此方法直观,但需手动操作,适合日常巡检。status.sh:位于WebLogic域目录的bin文件夹下(如/opt/Oracle/Middleware/user_projects/domains/base_domain/bin/status.sh),执行后可快速查看域内所有服务器实例的运行状态(如“RUNNING”“FAILED”)。weblogic.Admin命令:通过JMX协议获取详细状态,例如检查服务器运行状态、健康状态及打开套接字数(参考下文“自定义脚本监控”中的示例)。JMX是Java应用的标准监控接口,可实现实时数据采集和自动化告警:
bin/setDomainEnv.sh文件,在JAVA_OPTIONS中添加以下参数(关闭认证和SSL,生产环境建议开启):JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.port=9000"
JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.ssl=false"
保存后重启WebLogic服务使配置生效。jconsole工具,在“远程”选项卡输入WebLogic服务器IP和JMX端口(如192.168.1.100:9000),连接后可查看内存使用情况(堆内存/非堆内存)、线程状态(活跃线程数/死锁)、类加载信息等。通过脚本定期检查关键指标,适合自动化运维和集成告警系统(如邮件、短信通知):
weblogic.Admin命令获取服务器状态,判断是否正常运行(参考搜索结果中的脚本):#!/bin/bash
CLASSPATH="/opt/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar:$CLASSPATH"
PATH="/usr/java/jdk1.6.0_45/bin:$PATH"
URL="192.168.222.11:7020"
USER_NAME="weblogic"
PASS_WORD="weblogic1"
DOMAIN_NAME="MedRecDomain"
SERVER_NAME="MedRecAdmSvr"
# 获取服务器运行状态
STATE_ALL=$(java weblogic.Admin -url $URL -username $USER_NAME -password $PASS_WORD get-pretty-mbean "$DOMAIN_NAME:Location=$SERVER_NAME,Name=$SERVER_NAME,Type=ServerRuntime")
if echo "$STATE_ALL" | grep -q "State: RUNNING"; then
echo "WebLogic实例运行状态正常"
else
echo "WebLogic实例运行异常" | mail -s "WebLogic报警" admin@example.com
fi
# 检查打开套接字数(阈值设为200)
SOCKET_NOW=$(echo "$STATE_ALL" | awk '/OpenSocketsCurrentCount/{print $2}')
SOCKET_MAX=200
if [ -n "$SOCKET_NOW" ] && [ "$SOCKET_NOW" -gt "$SOCKET_MAX" ]; then
echo "打开套接字数超过阈值:$SOCKET_NOW > $SOCKET_MAX" | mail -s "WebLogic套接字报警" admin@example.com
fi
脚本需定期执行(如通过crontab -e设置每5分钟运行一次),并将结果输出到日志或发送告警。第三方工具提供集中化管理、丰富的可视化和高级告警功能,适合企业级环境:
weblogic_exporter(WebLogic专用导出器)采集性能指标(如JVM堆内存、线程数、请求响应时间),并通过Grafana创建可视化面板(如仪表盘、趋势图)。此方案适合动态云环境,支持高扩展性。以上方法可根据运维需求(如是否需要自动化、可视化)、环境规模(如小型测试环境/大型生产环境)选择使用。例如,小型环境可使用管理控制台+jconsole+shell脚本,生产环境建议采用第三方工具(如Zabbix/Prometheus)+自定义脚本,实现全面的监控与告警。