温馨提示×

CentOS Tomcat日志备份策略是什么

小樊
36
2025-12-23 13:13:39
栏目: 智能运维

CentOS Tomcat日志备份策略

策略总览

  • 采用“本地按日轮转 + 压缩归档 + 定期清理 + 异地/离线归档”的组合方式,兼顾可用性、可恢复性与磁盘成本控制。
  • 日常由 logrotate 按天或按大小对 catalina.outlogs/*.log 进行轮转、压缩与保留;配合 crond 的每日任务自动执行。
  • 每周或每月将已轮转的归档日志打包并拷贝到 NFS/对象存储/备份服务器,实现长期留存与灾备。

本地轮转与清理

  • 推荐方案:使用 logrotate 管理 catalina.out(适用于运行中持续写入的日志文件)。
  • 示例配置(/etc/logrotate.d/tomcat):
    /opt/tomcat/logs/catalina.out {
        daily
        rotate 30
        size 100M
        copytruncate
        compress
        delaycompress
        dateext
        dateformat .%Y-%m-%d
        missingok
        notifempty
        su tomcat tomcat
    }
    
    要点说明:
    • copytruncate 适配持续写入的 catalina.out(先复制后截断,避免重启);若采用“reload/重启”方案,可改用 nocopytruncate。
    • daily + size 100M 双触发更稳妥;rotate 30 保留最近 30 份;compress + delaycompress 节省空间;dateext 便于按日期检索。
    • 其他日志(如 localhost_access_logcatalina.*.log)可在同一目录用通配符一并管理:
      /opt/tomcat/logs/*.log {
          daily
          rotate 14
          compress
          missingok
          notifempty
          create 640 tomcat tomcat
          su tomcat tomcat
      }
      
  • 触发与验证:
    • 系统通过 /etc/cron.daily/logrotate 每日自动执行;也可手动测试:
      logrotate -f /etc/logrotate.d/tomcat
      logrotate -d /etc/logrotate.d/tomcat   # 语法/规则校验
      
  • 替代/补充方案:使用 cronolog 将 catalina.out 按日期切分(需在 bin/catalina.sh 中改造输出管道),适合希望由应用侧直接按日生成新文件的场景。

异地与离线归档

  • 目标:将已轮转压缩的历史日志定期拷贝到独立存储(如 /backup/tomcat 或远程备份介质),实现长期留存与灾备。
  • 示例脚本(保留最近 7 天本地,7–30 天归档,>30 天删除):
    #!/bin/bash
    set -e
    TOMCAT_LOGS="/opt/tomcat/logs"
    BACKUP_BASE="/backup/tomcat"
    KEEP_LOCAL_DAYS=7
    ARCHIVE_DAYS=30
    
    mkdir -p "$BACKUP_BASE/archive"
    
    # 1) 打包昨天的已轮转日志(如 catalina.out-2025-12-22.gz)
    YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
    cd "$TOMCAT_LOGS" || exit 1
    ARCHIVE_FILE="$BACKUP_BASE/archive/tomcat_logs_${YESTERDAY}.tar.gz"
    find . -maxdepth 1 -name "*${YESTERDAY}*.gz" -print0 | \
      xargs -0 tar -czf "$ARCHIVE_FILE" --remove-files 2>/dev/null || true
    
    # 2) 清理本地旧归档
    find "$TOMCAT_LOGS" -name "*.gz" -mtime +$KEEP_LOCAL_DAYS -delete
    find "$BACKUP_BASE/archive" -name "*.tar.gz" -mtime +$ARCHIVE_DAYS -delete
    
    # 3) (可选)同步到远程存储(示例:rsync 到备份服务器)
    # rsync -avz --delete "$BACKUP_BASE/archive/" backup@backup.example.com:/data/tomcat/
    
  • 定时任务(每天 02:00 执行):
    0 2 * * * /usr/local/bin/tomcat_log_archive.sh >> /var/log/tomcat_archive.log 2>&1
    
  • 如需集中管理与审计,可将 Tomcat 日志通过 rsyslog 发送到远程 Syslog 服务器,再由集中平台进行长期保存与备份。

监控与容量规划

  • 容量阈值与告警:对 /opt/tomcat/logs/backup 设置磁盘使用率阈值(如 80%)与告警,避免因日志占满导致业务异常。
  • 校验与演练:定期抽样解压归档验证可用性;演练恢复流程(从归档中定位某日的 catalina.out 片段)。
  • 日志级别与输出控制:在 conf/logging.properties 中将不必要的日志级别调高(如 WARNING/ERROR),减少无效日志产出,从源头控量。
  • 权限与安全:备份目录与归档文件设置最小权限(如 640/600),仅允许 tomcat 用户与备份账号访问;涉及远程传输时使用 SSH key 或最小权限凭据。

0