1. 使用WebLogic自带管理控制台
WebLogic管理控制台是内置的图形化管理工具,可通过浏览器直接访问(默认URL为http://<weblogic-server-ip>:7001/console),无需额外安装软件。登录后,导航至“Servers”→“MyServer”→“Monitoring”→“Performance”,可实时查看服务器的关键性能指标,包括:JVM内存使用情况(堆内存、非堆内存)、线程池状态(活跃线程数、等待队列长度、最大线程数)、连接池状态(活跃连接数、空闲连接数)、请求处理时间等。此外,还可进入“Alerts”模块,配置阈值告警(如JVM内存超过80%时触发邮件通知),实现主动监控。
2. 通过JMX(Java Management Extensions)监控
JMX是Java平台的标准监控接口,WebLogic原生支持JMX远程监控。需先配置JMX远程访问:编辑WebLogic域目录下的bin/setDomainEnv.sh文件,在JAVA_OPTIONS中添加以下参数(替换端口为实际值):
-Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
重启WebLogic使配置生效。随后可使用JMX客户端工具(如JConsole、VisualVM)连接:打开工具后选择“远程”→“添加”,输入WebLogic服务器IP和JMX端口(如192.168.1.100:9000),无需认证即可查看详细的MBean指标(如java.lang:type=Memory的内存使用、weblogic.management.runtime.ServerRuntimeMBean的线程状态)。
3. 利用WLST(WebLogic Scripting Tool)脚本监控
WLST是WebLogic提供的基于Jython的命令行脚本工具,可实现自动化监控和复杂逻辑处理。通过WLST可获取服务器健康状态、线程池详情、JVM内存等指标,并输出到日志或文件。示例脚本(保存为monitor_server.py):
import sys
from java.lang import ManagementFactory
# 连接到WebLogic服务器
connect('weblogic', 'welcome1', 't3://localhost:7001')
# 获取ServerRuntimeMBean
serverRuntime = ObjectName('com.bea:Name=MedRecAdmSvr,Type=weblogic.management.runtime.ServerRuntimeMBean')
# 获取健康状态
health_state = serverRuntime.getHealthState()
print(f"Server Health State: {health_state.getState()}")
# 获取线程池活跃线程数
active_threads = serverRuntime.getActiveThreadCount()
print(f"Active Threads: {active_threads}")
# 断开连接
disconnect()
运行脚本:java weblogic.WLST monitor_server.py,结果将输出到控制台,可用于后续自动化处理(如结合Shell脚本发送告警)。
4. 第三方监控工具集成
第三方工具可实现集中化、可视化监控,适用于大规模环境:
weblogic-monitoring-exporter(WebLogic官方提供的指标导出器)将WebLogic指标转换为Prometheus可采集的格式。配置Prometheus抓取weblogic-monitoring-exporter的/metrics端点,再通过Grafana创建仪表盘(如JVM内存趋势、线程池状态),并设置报警规则(如Grafana Alertmanager发送邮件、Slack通知)。plugins目录,配置commands.cfg和services.cfg,实现基础监控和告警。5. 自定义Shell/Python脚本监控
通过脚本定期检查WebLogic状态,适合简单需求或定制化监控:
#!/bin/bash
WEBLOGIC_PORT=7001
WEBLOGIC_PID=$(ps -ef | grep 'weblogic.Server' | grep -v grep | awk '{print $2}')
# 检查进程是否存在
if [ -z "$WEBLOGIC_PID" ]; then
echo "WebLogic process is not running!"
exit 1
fi
# 检查端口是否监听
if ! netstat -tuln | grep -q ":$WEBLOGIC_PORT "; then
echo "WebLogic port $WEBLOGIC_PORT is not listening!"
exit 1
fi
echo "WebLogic is running normally."
exit 0
添加到crontab(* * * * * /path/to/script.sh),每分钟运行一次,若检测失败则发送邮件告警。WLST模块实现更复杂的监控(如获取JVM内存详情、线程池状态),示例脚本(获取JVM内存):from weblogic.management.scripting import WLST
import smtplib
from email.mime.text import MIMEText
def send_alert(message):
sender = 'monitor@example.com'
receiver = 'admin@example.com'
msg = MIMEText(message)
msg['Subject'] = 'WebLogic Alert'
msg['From'] = sender
msg['To'] = receiver
server = smtplib.SMTP('smtp.example.com')
server.sendmail(sender, receiver, msg.as_string())
server.quit()
try:
WLST.connect('weblogic', 'welcome1', 't3://localhost:7001')
serverRuntime = WLST.cmo.getServerRuntime()
heap_memory = serverRuntime.getHeapMemoryUsage().getUsed() / 1024 / 1024
max_heap = serverRuntime.getHeapMemoryUsage().getMax() / 1024 / 1024
if heap_memory > max_heap * 0.8:
send_alert(f"JVM memory usage high: {heap_memory:.2f}MB/{max_heap:.2f}MB")
WLST.disconnect()
except Exception as e:
send_alert(f"WebLogic monitoring error: {str(e)}")
运行脚本后,若JVM内存超过阈值,将自动发送邮件告警。