1. 使用WebLogic自带管理工具
WebLogic Server提供了内置的图形化与命令行工具,适合快速监控基础性能指标。
http://<weblogic-server>:7001/console,使用管理员账户登录。导航至“Servers”→“Your Server”→“Monitoring”→“Performance”,可实时查看CPU使用率、内存占用、线程池状态(活跃线程数、等待队列长度)、JDBC连接池使用率等核心指标。connect('weblogic', 'password', 't3://<weblogic-server>:7001')
serverRuntime = cmo.getServerRuntime()
print("Server Health:", serverRuntime.getHealthState())
disconnect()
可扩展脚本收集更多指标(如JVM堆内存、子系统健康状态)并输出到日志。2. 基于JMX的监控(灵活且可扩展)
JMX是Java标准监控接口,WebLogic通过JMX暴露大量性能指标,需先配置远程访问:
DOMAIN_HOME/bin/setDomainEnv.sh,添加以下参数(替换端口为实际值):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-server>:9000,即可查看内存、线程、类加载等指标。3. 第三方监控工具(专业且全面)
第三方工具提供集中化监控、告警及可视化功能,适合生产环境:
weblogic_exporter(WebLogic专用指标采集器)抓取WebLogic指标。配置prometheus.yml添加WebLogic job:scrape_configs:
- job_name: 'weblogic'
static_configs:
- targets: ['<weblogic-server>:<exporter-port>']
4. 系统层面监控(辅助定位资源瓶颈)
通过Debian系统工具监控WebLogic所在服务器的基础资源使用情况,辅助判断性能问题根源:
htop(sudo apt install htop)显示CPU、内存占用排名,glances(sudo apt install glances)提供更全面的系统指标(磁盘IO、网络流量)。sar(系统活动报告)、iostat(磁盘IO统计)、mpstat(CPU使用率统计)等命令,记录系统历史性能数据。例如,sar -u 1 5每秒采集1次CPU使用率,共5次。5. 日志分析与告警(定位问题根源)
通过分析WebLogic日志识别性能问题(如内存泄漏、线程死锁):
DOMAIN_HOME/servers/<server-name>/logs/access.log,分析请求响应时间、HTTP状态码(如5xx错误增多可能表示服务器压力大)。DOMAIN_HOME/servers/<server-name>/logs/<server-name>.log,查找“OutOfMemoryError”“ThreadDeadlock”等关键字。可使用grep、awk等工具提取关键信息,或通过ELK Stack(Elasticsearch+Logstash+Kibana)实现日志集中化分析与告警。6. 自动化监控与告警(持续保障性能)
通过定时任务或工具实现自动化监控,及时通知异常:
check_threads.sh:#!/bin/bash
ACTIVE_THREADS=$(curl -s -u weblogic:password http://<weblogic-server>:7001/console/jmx-console/HtmlAdaptor?action=invokeOpByName&name=weblogic.management.runtime.ThreadPoolRuntimeMBean&methodName=getActiveThreads)
THRESHOLD=100
if [ "$ACTIVE_THREADS" -gt "$THRESHOLD" ]; then
echo "High active threads: $ACTIVE_THREADS" | mail -s "WebLogic Alert" admin@example.com
fi
添加到crontab:* * * * * /path/to/check_threads.sh(每分钟执行一次)。