1. 利用WebLogic自带工具监控
WebLogic Server提供了内置的图形化与管理工具,适合快速查看基础资源状态:
http://<服务器IP>:7001/console,登录后导航至“Monitoring” section,选择对应服务器或MBean(如“ServerRuntime”“ThreadPool”“JDBCConnectionPool”),可实时查看CPU使用率、内存占用、线程池活跃线程数、连接池等待队列等指标;支持设置阈值告警(如线程池活跃线程超过100时触发邮件通知)。connect('weblogic', 'welcome1', 't3://<服务器IP>:7001')
serverRuntime = cmo.getServerRuntime()
print("Server Health State:", serverRuntime.getHealthState())
disconnect()
可将脚本定时执行(如通过cron),并将结果输出到日志或发送告警。2. 第三方监控工具集成
结合专业监控工具实现长期存储、可视化与高级告警:
weblogic-monitoring-exporter(WebLogic官方提供的REST端点)暴露指标,Prometheus抓取数据后,用Grafana创建仪表盘(如CPU、内存、线程池、JDBC连接池等面板);支持设置报警规则(如内存使用率超过80%时触发Slack通知)。配置步骤:
weblogic-monitoring-exporter并部署到WebLogic服务器;prometheus.yml),添加WebLogic job:scrape_configs:
- job_name: 'weblogic'
static_configs:
- targets: ['<服务器IP>:<exporter-port>']
commands.cfg中,配置服务检查与告警。3. JMX监控与诊断
JMX是Java应用的标准监控接口,适用于深入分析WebLogic内部状态:
setDomainEnv.sh文件(位于<域目录>/bin),添加以下JVM参数:JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
重启WebLogic使配置生效。jconsole,选择“远程” tab,输入<服务器IP>:9000,连接后可查看内存(堆内存、非堆内存)、线程(活跃线程数、线程状态)、类加载等指标;4. 系统层面基础监控
通过Debian系统工具监控WebLogic所在主机的资源使用情况,快速定位系统瓶颈:
top(动态显示进程CPU/内存占用)、htop(增强版top,支持颜色与快捷键);vmstat 1 5(每5秒显示一次虚拟内存、CPU、进程、I/O统计)、iostat -x 1(查看磁盘IO详细情况,如读写延迟)、free -h(内存使用情况,以GB/MB显示)、df -h(磁盘空间使用情况);netstat -tulnp(查看TCP/UDP监听端口及对应进程)、ss -s(统计socket连接数)。5. 日志分析与自动化报警
<域目录>/servers/<服务器名>/logs/下的server.log、access.log),通过grep、awk等工具提取关键信息(如bea-开头的错误代码、ERROR关键字),分析性能问题(如数据库连接超时、应用部署失败);cron定时执行监控脚本(如检查线程池活跃线程数、内存使用率),将结果发送到指定邮箱。示例脚本(检查活跃线程数):#!/bin/bash
JMX_URL="service:jmx:rmi:///jndi/rmi://<服务器IP>:9000/jmxrmi"
ACTIVE_THREADS=$(curl -s -u weblogic:welcome1 "$JMX_URL" | grep "ThreadPool" | awk '{print $2}')
THRESHOLD=100
if [ "$ACTIVE_THREADS" -gt "$THRESHOLD" ]; then
echo "High active threads detected: $ACTIVE_THREADS" | mail -s "WebLogic Alert" admin@example.com
fi
将脚本保存为/path/to/script.sh,添加执行权限(chmod +x /path/to/script.sh),并在crontab -e中添加* * * * * /path/to/script.sh(每分钟执行一次)。