温馨提示×

如何在Linux上监控WebLogic

小樊
33
2025-12-08 13:16:51
栏目: 智能运维

Linux上监控WebLogic的实用方案

一 监控总览与关键指标

  • 建议从四个层面建立监控:
    1. 操作系统层:CPU、内存、I/O、网络、文件句柄;
    2. JVM层:堆与非堆内存、GC次数/时间、类加载、线程数;
    3. WebLogic运行时:ServerRuntime 的 StateHealthStateOpenSocketsCurrentCountExecuteThreadIdleCountExecuteThreadTotalCountQueueLength
    4. 应用与数据源: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 并输出健康状态):
    connect('weblogic','welcome1','t3://localhost:7001')
    serverRuntime = cmo.getServerRuntime()
    print("HealthState:", serverRuntime.getHealthState())
    disconnect()
    
    可将 WLST 与定时任务结合,采集 ServerRuntime 指标并输出为 JSON/文本,供外部系统采集。
  • Shell 脚本示例(通过 weblogic.Admin 查询 MBean,判断 RUNNING/HEALTH_OKOpenSocketsCurrentCount):
    #!/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}'
    
    建议将脚本输出写入日志文件,由 Zabbix 等监控系统解析告警(如检测日志中是否出现 NO)。

四 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 ManagerNagiosHertzBeat 等,可结合脚本或 JMX 插件统一监控与告警。

0