温馨提示×

Linux WebLogic日志如何分析

小樊
52
2025-10-18 13:11:05
栏目: 智能运维

Linux环境下WebLogic日志分析与故障排查指南

一、日志文件位置

WebLogic日志文件集中存储在域目录下的servers子目录中,不同日志对应不同功能:

  • 服务器日志(server.log):记录单个服务器实例(如AdminServer、Managed Server)的详细运行信息(启动/停止、请求处理、异常等),路径为DOMAIN_HOME/servers/<server_name>/logs/<server_name>.log
  • 域日志(domain.log):记录整个域的全局事件(如服务器状态变更、集群通信、安全策略变更),路径为DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log(管理服务器默认路径)。
  • 访问日志(access.log):记录HTTP请求详情(客户端IP、请求时间、URL、HTTP状态码、响应时间),路径为DOMAIN_HOME/servers/<server_name>/logs/access.log

二、常用命令行分析工具

1. 基础查看与过滤

  • 实时查看日志:使用tail -f命令实时跟踪日志新增内容(如tail -f DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log),便于监控实时运行状态。
  • 搜索关键字:用grep命令过滤特定关键字(如错误、警告),例如grep "ERROR" server.log可提取所有错误日志;grep -C 5 "Timeout" access.log可显示匹配行及前后5行上下文,帮助定位问题场景。
  • 提取特定字段:结合awk提取日志中的关键字段(如时间、状态码),例如awk '{print $1, $2, $9}' access.log可提取访问日志中的时间、IP和HTTP状态码,便于统计分析。

2. 高级文本处理

  • 统计错误数量:用awk统计特定时间段内的错误日志数量(如2025-10-18的ERROR日志),例如awk '/ERROR/ && $1=="2025-10-18" {count++} END {print "Error count:", count}' server.log
  • 排序与去重:用sortuniq分析高频错误(如grep "ERROR" server.log | sort | uniq -c | sort -nr),快速找出出现次数最多的错误类型。

三、日志级别与配置优化

1. 日志级别设置

通过WebLogic控制台调整日志级别(Environment > Servers > <server_name> > Logging),级别从低到高依次为:

  • TRACE:最详细(记录方法调用、变量值),用于深度调试;
  • DEBUG:调试信息(记录业务流程细节);
  • INFO:正常运行信息(默认级别,记录服务器启动、停止等);
  • WARN:警告信息(潜在问题,如端口冲突);
  • ERROR:错误信息(影响服务运行的异常,如数据库连接失败);
  • CRITICAL:严重错误(导致服务崩溃,如JVM内存溢出)。
    建议:生产环境设置为INFO,排查问题时临时调整为DEBUG,避免日志量过大。

2. 日志滚动策略

配置日志滚动以避免单个日志文件过大(影响读取效率),通过控制台设置:

  • 基于时间滚动:如每天生成一个新日志文件(Rolling Policy > Time-based,设置Rolling PeriodDaily);
  • 基于大小滚动:如日志文件超过100MB时滚动(Rolling Policy > Size-based,设置File Size100MB);
  • 保留数量:设置保留的日志文件数量(如Keep Files7,保留最近7天的日志)。

四、常见故障日志分析示例

1. 服务器启动失败

  • 典型错误java.net.BindException: Address already in use(端口冲突)。
  • 分析步骤
    ① 查看服务器日志,定位BindException错误及发生时间;
    ② 检查config.xml中的端口配置(如<listen-port>),确认是否与其他服务(如Apache、Nginx)端口冲突;
    ③ 修改config.xml中的端口(如将7001改为7002),重启服务器。

2. 数据库连接池异常

  • 典型错误java.sql.SQLException: Connection timed out(连接超时)。
  • 分析步骤
    ① 查看服务器日志,定位SQLException错误及连接池名称(如jdbc/MyDB);
    ② 检查数据库服务器是否正常运行(pingtelnet测试端口);
    ③ 登录WebLogic控制台(Environment > Servers > <server_name> > Services > Data Sources),调整连接池参数(增加Max Capacity、设置Connection Timeout为30秒)。

3. 内存溢出(OutOfMemoryError)

  • 典型错误java.lang.OutOfMemoryError: PermGen space(永久代内存溢出)或OutOfMemoryError: Java heap space(堆内存溢出)。
  • 分析步骤
    ① 查看服务器日志,定位OutOfMemoryError错误及发生时间;
    ② 调整JVM内存参数(在startWebLogic.sh中增加-Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m);
    ③ 使用jmapjvisualvm工具分析内存使用情况(如jmap -dump:format=b,file=heap.hprof <pid>导出堆转储文件,用jvisualvm打开分析内存泄漏点)。

五、自动化与进阶分析工具

1. ELK Stack(Elasticsearch+Logstash+Kibana)

  • 功能:实现日志的集中收集、存储、搜索和可视化;
  • 优势:支持大规模日志分析(如集群环境)、自定义仪表盘(如展示错误率趋势、请求响应时间分布);
  • 配置步骤:用Logstash的file插件采集WebLogic日志,通过Elasticsearch索引日志数据,用Kibana创建可视化面板。

2. WebLogic Scripting Tool(WLST)

  • 功能:通过Python脚本自动化提取和分析日志;
  • 示例:使用WLST脚本连接服务器,提取指定服务器的日志内容并保存到本地文件(如前面提到的getMessages()方法),便于批量处理和分析。

3. GoAccess

  • 功能:实时分析WebLogic访问日志(access.log),生成HTML报告;
  • 优势:无需安装数据库,快速生成可视化图表(如请求量、状态码分布、Top IP),适合安全审计和性能分析。

0