如何在Linux上监控WebLogic
导读:Linux上监控WebLogic的实用方案 一 监控总览与关键指标 建议从四个层面建立监控: 操作系统层:CPU、内存、I/O、网络、文件句柄; JVM层:堆与非堆内存、GC次数/时间、类加载、线程数; WebLogic运行时:Serv...
Linux上监控WebLogic的实用方案
一 监控总览与关键指标
- 建议从四个层面建立监控:
- 操作系统层:CPU、内存、I/O、网络、文件句柄;
- JVM层:堆与非堆内存、GC次数/时间、类加载、线程数;
- WebLogic运行时:ServerRuntime 的 State、HealthState、OpenSocketsCurrentCount、ExecuteThreadIdleCount、ExecuteThreadTotalCount、QueueLength;
- 应用与数据源:JDBC连接池使用率、慢查询、Servlet/JSF会话、EJB/线程泄漏迹象。
- 在控制台查看路径:Servers -> -> Monitoring -> Performance,重点关注:IdleThreads(空闲线程,不应长期为0)、QueueLength(等待队列,长时间高位需警惕)、内存与GC趋势。
二 快速方法 控制台与日志
- 管理控制台:通过浏览器访问 http://:7001/console,登录后在 Servers -> -> Monitoring -> Performance 观察健康与线程队列、内存、JVM等信息。
- 实时日志:在域目录查看实例日志,例如
tail -f $DOMAIN_HOME/servers//logs/.out
用于快速定位启动失败、OutOfMemoryError、Stuck Thread 等。
三 命令行与脚本 WLST 与 Shell
- WLST 示例(Python/Jython 脚本,连接 t3://localhost:7001 并输出健康状态):
可将 WLST 与定时任务结合,采集 ServerRuntime 指标并输出为 JSON/文本,供外部系统采集。connect('weblogic','welcome1','t3://localhost:7001') serverRuntime = cmo.getServerRuntime() print("HealthState:", serverRuntime.getHealthState()) disconnect() - Shell 脚本示例(通过 weblogic.Admin 查询 MBean,判断 RUNNING/HEALTH_OK 与 OpenSocketsCurrentCount):
建议将脚本输出写入日志文件,由 Zabbix 等监控系统解析告警(如检测日志中是否出现 NO)。#!/usr/bin/env bash export CLASSPATH="/opt/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar:$CLASSPATH" URL="192.168.222.11:7020" USER="weblogic" PASS="$WEBLOGIC_PASSWORD" # 推荐用环境变量,避免明文 DOMAIN="MedRecDomain" SERVER="MedRecAdmSvr" STATE_ALL=$(java weblogic.Admin -url $URL -username $USER -password $PASS \ get -pretty -mbean "$DOMAIN:Location=$SERVER,Name=$SERVER,Type=ServerRuntime") echo "$STATE_ALL" | grep -q "State: RUNNING" || echo "NOT_RUNNING" echo "$STATE_ALL" | grep -q "State: HEALTH_OK" || echo "NOT_HEALTHY" echo "$STATE_ALL" | awk '/OpenSocketsCurrentCount/{ print "OpenSockets="$2} '
四 JMX 远程监控 JConsole 与 VisualVM
- 在 $Domain_HOME/bin/setDomainEnv.sh 中启用 JMX(示例开放 9000 端口,生产环境请开启认证与 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" - 启动本地 jconsole,选择“远程”,输入 < 服务器IP> :9000 连接;可用 VisualVM 或 VisualVM 插件进行更细的线程、内存与 MBean 分析。
- 安全建议:生产环境务必启用 鉴权 与 SSL,并限制来源 IP 与端口访问。
五 企业级监控与告警集成
- Zabbix:用 Shell/Python 脚本采集 State/Health/线程/套接字 等,写入日志或 Zabbix Agent 可采集项;示例触发器:
last(/2.1.1.13/vfs.file.regmatch[/Check_WebLogic.log,NO])=1 - Prometheus:部署 weblogic-monitoring-exporter 暴露指标,Prometheus 抓取并配合 Grafana 可视化;
- 其他 APM/运维平台:如 Applications Manager、Nagios、HertzBeat 等,可结合脚本或 JMX 插件统一监控与告警。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Linux上监控WebLogic
本文地址: https://pptw.com/jishu/766508.html
