温馨提示×

Ubuntu中Node.js日志备份方法有哪些

小樊
32
2025-12-06 00:56:26
栏目: 编程语言

Ubuntu中Node.js日志备份方法

一 系统级日志轮转 logrotate

  • 适用场景:长期运行的服务,需自动切割、压缩、按天/周保留并清理历史日志。
  • 安装与配置:
    • 安装:sudo apt-get install logrotate
    • 新建配置:/etc/logrotate.d/nodejs
      /var/log/nodejs/*.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
          create 0640 root adm
          sharedscripts
          postrotate
              # 按你的进程管理方式选择其一
              systemctl reload myapp.service >/dev/null 2>&1 || true
              # 或 pm2:pm2 reload app_name >/dev/null 2>&1 || true
              # 或 直接发送信号:kill -USR1 $(cat /var/run/nodejs.pid) 2>/dev/null || true
          endscript
      }
      
  • 测试与执行:
    • 语法检查:sudo logrotate -d /etc/logrotate.d/nodejs
    • 强制执行:sudo logrotate -f /etc/logrotate.d/nodejs
  • 说明:logrotate负责“切割与归档”,如需长期留存可再配合定时打包/同步到备份目录或远程存储。

二 使用 PM2 内置日志切割

  • 适用场景:应用由 PM2 托管,希望少维护、少侵入。
  • 配置示例(按大小滚动,保留30天):
    • 全局安装:sudo npm install -g pm2
    • 设置参数:
      • pm2 set pm2-logrotate:max_size 1G
      • pm2 set pm2-logrotate:rotateInterval 0(配合max_size按大小滚动)
      • pm2 set pm2-logrotate:retain 30
      • pm2 set pm2-logrotate:workInterval 7200
    • 使配置生效:pm2 restart app_name
  • 说明:PM2自动切割并按保留天数清理,适合容器化或快速部署环境。

三 脚本化打包与定时备份

  • 适用场景:需要把日志做按日归档压缩包、保留到独立备份目录,并可配合远程同步。
  • 本地打包示例脚本 backup_logs.sh:
    #!/usr/bin/env bash
    set -e
    LOG_DIR="/var/log/nodejs"
    BACKUP_BASE="/backup/nodejs"
    DATE=$(date +%F_%H%M%S)
    mkdir -p "$BACKUP_BASE/$DATE"
    tar -czf "$BACKUP_BASE/$DATE/nodejs_logs_$DATE.tar.gz" -C "$LOG_DIR" .
    # 可选:清理超过N天的归档
    find "$BACKUP_BASE" -maxdepth 1 -type d -mtime +7 -delete
    
    • 赋权:chmod +x backup_logs.sh
    • 定时:crontab -e 添加
      • 每天 02:00 打包:0 2 * * * /path/to/backup_logs.sh
  • 远程同步示例(配合 rsync):
    rsync -avz --delete /backup/nodejs/ user@remote:/backup/nodejs/
    
    • 定时:0 3 * * * /usr/bin/rsync -avz --delete /backup/nodejs/ user@remote:/backup/nodejs/
  • 说明:脚本方式灵活,可扩展为上传对象存储、加密、校验等流程。

四 集中式日志与远程备份

  • 适用场景:多实例/多机房的日志统一管理与异地容灾。
  • 方案要点:
    • 使用 systemd-journald/rsyslog 将日志发往远程日志服务器,集中存储与审计。
    • 或使用 rsync 将本地归档目录增量同步到远程主机/NAS,实现多地备份。
  • 说明:集中式方案侧重“收集与留存”,可与本地轮转/脚本归档组合形成完整链路。

五 备份策略与恢复建议

  • 保留策略:按合规与容量设定保留期(如7/30天),并定期清理过期归档。
  • 多地与离线:至少保留两份副本(本地+远程/离线),降低单点故障风险。
  • 完整性校验:对归档做校验和或抽样解压验证,确保可恢复。
  • 监控告警:对日志目录或归档目录设置容量阈值告警(如 Monit),提前发现异常增长。
  • 恢复步骤简述:
    • 本地恢复:解压归档至日志目录并重启应用(或发送信号让其重新打开日志)。
    • 远程恢复:先 rsync 回本地,再按上述步骤解压与重启。

0