Ubuntu系统日志清理的最佳实践
小樊
34
2025-12-27 02:58:21
Ubuntu系统日志清理与保留策略最佳实践
一 核心原则
- 先备份再清理:优先备份关键日志(如 /var/log/syslog、/var/log/auth.log),可使用 cp/rsync 将日志复制到安全位置,避免误删导致审计与排障受阻。
- 优先使用内置工具:用 journalctl 管理 systemd 日志,用 logrotate 管理传统应用日志,避免粗暴删除正在写入的文件。
- 避免直接删除正在写入的日志文件:如需“清空”,优先使用 truncate -s 0 而非 rm,减少句柄与进程异常风险。
- 设置合理保留策略:按业务与合规要求配置保留周期与总量上限,兼顾排障与审计需要。
- 权限与安全:日志含敏感信息,确保 /var/log 及日志文件权限最小化(如 640 root:adm),仅授权用户可访问。
- 清理后验证:观察服务是否正常、日志是否继续写入、磁盘空间是否释放。
二 标准操作步骤
-
- 评估现状
- 查看 systemd 日志占用:journalctl --disk-usage
- 查看目录占用:du -sh /var/log
-
- 安全释放空间(journald)
- 按时间保留:sudo journalctl --vacuum-time=7d(保留最近 7 天)
- 按大小保留:sudo journalctl --vacuum-size=500M(最大 500MB)
-
- 清理传统日志文件
- 清空而非删除正在写入的日志:sudo truncate -s 0 /var/log/syslog
- 批量清空 .log 文件:sudo find /var/log -type f -name “*.log” -exec truncate -s 0 {} ;
- 删除已轮转的旧压缩日志:sudo find /var/log -type f -name “*.gz” -mtime +7 -delete
-
- 触发或验证 logrotate
- 强制轮转验证:sudo logrotate -f /etc/logrotate.conf
-
- 权限与安全检查
- 权限示例:sudo chmod 640 /var/log/syslog; sudo chown root:adm /var/log/syslog
-
- 清理后复核
- 复核占用:journalctl --disk-usage、df -h
- 复核写入:如 sudo tail -f /var/log/syslog 观察是否正常
三 配置长期保留策略
- journald(/etc/systemd/journald.conf)
- 建议设置:SystemMaxUse=1G、SystemMaxFileSize=100M、MaxRetentionSec=7day,按需调整;修改后执行 sudo systemctl restart systemd-journald 生效。
- logrotate(/etc/logrotate.conf 与 /etc/logrotate.d/*)
- 全局或应用示例:
- /var/log/syslog {
- daily
- rotate 7
- compress
- delaycompress
- missingok
- notifempty
- create 0640 root adm
- size 100M
- }
- 测试与生效:sudo logrotate -f /etc/logrotate.conf;logrotate 通常由 /etc/cron.daily/logrotate 每日定时执行。
四 降低日志量的配置优化
- 调整 rsyslog 日志级别:编辑 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf,将 *.info;auth,authpriv.none 调整为 *.warning;auth,authpriv.none,减少 info 级别冗余。
- 服务级日志级别:对支持的服务(如 avahi-daemon)将 log-level 从 info 调为 warning,重启服务生效。
- 限流与采样:在 rsyslog 中按需配置 $SystemLogRateLimitInterval 与 $SystemLogRateLimitBurst,抑制突发大量日志对磁盘与性能的冲击。
五 监控与自动化建议
- 建立例行巡检:每周检查 journalctl --disk-usage 与 du -sh /var/log,当占用超过阈值(如 80%)触发告警或自动清理。
- 自动化与幂等:使用 cron 或 systemd timer 定期执行清理脚本;脚本应包含错误捕获与日志记录,避免重复或误删。
- 合规与审计:对含敏感信息的日志,按法规要求保留足够期限;必要时对归档日志进行 gpg 加密存储。
- 集中化与可视化:大规模环境建议引入 ELK Stack 或 Graylog 做集中存储、检索与可视化,便于审计与容量规划。