温馨提示×

Debian中WebLogic日志如何有效管理

小樊
46
2025-11-23 11:46:07
栏目: 智能运维

Debian中WebLogic日志有效管理

一 日志来源与定位

  • 常见日志与路径
    • 服务器日志 server.log:记录各 WebLogic Server 实例的运行与错误,通常位于域目录的 logs/ 下,例如 /u01/app/weblogic/domain_name/logs/server.log
    • 访问日志 access.log:记录 HTTP/HTTPS 访问,默认在 weblogic/logs/access/ 下,可按时间切分。
    • 诊断日志 diagnostic.log:诊断与诊断框架相关日志。
    • 域日志 Domain Log:汇聚域内多个实例的日志,便于查看整体状态。
  • 快速查看与过滤
    • 实时查看:tail -f /u01/app/weblogic/domain_name/logs/server.log
    • 关键字过滤:grep “ERROR” /u01/app/weblogic/domain_name/logs/server.log
  • 若通过 systemd 托管 WebLogic,可用 journalctl 查看服务日志(如:journalctl -u weblogic)。

二 在WebLogic内配置日志轮转与保留

  • 服务器日志轮转(控制台或MBean)
    • 关键参数:
      • Rotation type:轮转方式,支持 NONE / SIZE / TIME
      • FileMinSize:触发大小(单位 KB,默认 500 KB,上限 2,097,150 KB)。
      • TimeSpan:按时间间隔轮转。
      • Log file name:支持时间格式占位符(如 %yyyy%%MM%%dd%%hh%%mm%),便于按时间命名归档。
    • 示例(按时间命名并每小时轮转):将文件名设为 myserver_%yyyy%%MM%%dd%%hh%%mm%.log,并设置 Rotation type=TIMETimeSpan=1 hour
  • HTTP 访问日志
    • 在控制台 HTTP 属性页可设置访问日志路径与格式,并按时间切分,例如 access_%yyyy%%MM%%dd%%hh%%mm%.log,生产环境常见按 24 小时切分。
  • 域日志
    • 默认仅将 WARNING 及以上级别转发到域日志;可通过创建 域日志过滤器 调整级别与内容。

三 使用 logrotate 管理文件轮转与清理

  • 适用对象:对 server.log、access.log 等文本日志进行按日/大小轮转、压缩与清理。
  • 示例配置(/etc/logrotate.d/weblogic)
    • 按天轮转、保留 7 天、压缩、延迟压缩、空文件不轮转、轮转后执行脚本:
      /u01/app/weblogic/*/logs/*.log {
        daily
        rotate 7
        missingok
        notifempty
        compress
        delaycompress
        sharedscripts
        postrotate
          systemctl reload weblogic >/dev/null 2>&1 || true
        endscript
      }
      
    • 要点:
      • postrotate 调整为你的实际服务重载方式(如使用 nodemanager 或自定义脚本)。
      • 测试与手动执行:logrotate -d /etc/logrotate.d/weblogic(调试),logrotate -f /etc/logrotate.d/weblogic(强制执行)。
      • 确保运行用户对日志目录有写权限,且 logrotate 定时任务已启用(Debian 通常默认启用)。

四 集中化监控与告警

  • 方案建议:ELK Stack(Elasticsearch + Logstash + Kibana)Splunk
  • Logstash 示例(/etc/logstash/conf.d/weblogic.conf)
    input {
      file {
        path => "/u01/app/weblogic/*/logs/*.log"
        start_position => "beginning"
        sincedb_path => "/var/lib/logstash/sincedb_weblogic"
      }
    }
    filter {
      grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{JAVACLASS:class} - %{GREEDYDATA:message}" }
      }
    }
    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "weblogic-%{+YYYY.MM.dd}"
      }
    }
    
  • 启动与访问
    • 启动组件:systemctl start elasticsearch logstash kibana
    • 访问 Kibanahttp://<your_server_ip>:5601,创建索引模式并配置告警规则。

五 日常运维与风险控制

  • 日志级别调优
    • $DOMAIN_HOME/config/logging.properties 中调整,例如:
      handlers= java.util.logging.ConsoleHandler
      java.util.logging.ConsoleHandler.level = INFO
      .level= INFO
      com.example.level = FINEST
      
    • 变更后需重启 WebLogic 使配置生效(如使用 systemdsystemctl restart weblogic)。
  • 安全清理运行中的大日志
    • 不建议直接删除正在写入的日志文件,可用“复制后清空”方式避免中断:
      0 0 * * * cp /var/log/weblogic/server.log /backup/server.log.$(date -d yesterday +\%Y\%m\%d).log; cat /dev/null > /var/log/weblogic/server.log
      
    • 配合 logrotatepostrotate 执行服务重载,确保日志句柄切换生效。
  • 容量预警
    • 使用 cron 定期检查日志大小,超过阈值发出告警:
      0 0 * * * du -sh /var/log/weblogic/*.log | awk '$1 ~ /G$/ {print "Large log: " $2}'
      
  • 关键注意
    • 避免重复轮转:若已在 WebLogic 内配置了 SIZE/TIME 轮转,外部 logrotate 宜使用 copytruncate 或确保应用重新打开日志文件,以免句柄问题。
    • 权限与属主:确保 weblogic 用户对日志目录与轮转后文件具备正确权限(如 640 weblogic:weblogic)。
    • 变更窗口:调整日志级别、路径或轮转策略时,尽量在维护窗口进行,并保留回滚方案。

0