ubuntu syslog清理策略
导读:Ubuntu syslog 清理策略 一 策略总览 采用“logrotate 轮转 + systemd-journald 限制”的双轨策略,分别管理传统文本日志(如 /var/log/syslog、/var/log/auth.log)与二...
Ubuntu syslog 清理策略
一 策略总览
- 采用“logrotate 轮转 + systemd-journald 限制”的双轨策略,分别管理传统文本日志(如 /var/log/syslog、/var/log/auth.log)与二进制日志(journal)。
- 推荐基线:文本日志按大小或时间触发轮转、压缩归档、保留 7–14 天;journal 按总大小或时间上限限制,避免无限增长。
- 避免直接删除正在写入的主日志文件(如 /var/log/syslog),优先“清空内容”或交由 logrotate 处理,必要时再重启 rsyslog。
二 推荐配置示例
-
logrotate 配置(/etc/logrotate.d/rsyslog,适用于 rsyslog)
- 建议同时覆盖常见系统日志文件,设置“size 触发优先、保留 7 份、压缩、延迟压缩、按日检查”,并配合 postrotate 通知 rsyslog 重新打开日志文件。
- 示例:
/var/log/syslog /var/log/auth.log /var/log/kern.log /var/log/mail.log /var/log/cron.log /var/log/daemon.log /var/log/debug /var/log/lpr.log /var/log/user.log /var/log/uucp.log { daily size 100M rotate 7 compress delaycompress missingok notifempty create 0640 root adm postrotate /usr/lib/rsyslog/rsyslog-rotate endscript } - 说明:
- daily:按天检查是否需要轮转;size 100M:达到 100MB 即触发(与时间条件“任一满足先触发”)。
- rotate 7:保留最近 7 个历史文件(含压缩包)。
- compress / delaycompress:压缩旧日志,延迟一轮压缩便于排查最新归档。
- postrotate … rsyslog-rotate:通知 rsyslog 重新打开日志描述符,确保继续写入新文件。
- 验证与执行:
- 语法/演练:
sudo logrotate -d /etc/logrotate.d/rsyslog - 强制执行:
sudo logrotate -f /etc/logrotate.d/rsyslog - 系统通常通过 /etc/cron.daily/logrotate 每日触发,无需额外 cron。
- 语法/演练:
-
systemd-journald 配置(/etc/systemd/journald.conf)
- 建议设置持久化存储并限制体积,防止 journal 无限增长:
[Journal] Storage=persistent SystemMaxUse=500M SystemKeepFree=100M MaxRetentionSec=7day - 应用:
sudo systemctl restart systemd-journald - 说明:
- SystemMaxUse:journal 最大占用磁盘;SystemKeepFree:保留至少多少空闲空间。
- MaxRetentionSec:日志最大保留时间;也可按需使用
journalctl --vacuum-size=500M或--vacuum-time=7d做临时收缩。
- 建议设置持久化存储并限制体积,防止 journal 无限增长:
三 应急清理与风险控制
- 快速释放空间(紧急情况)
- 清空正在写入的日志内容(保留 inode,避免破坏文件句柄):
sudo truncate -s 0 /var/log/syslogsudo truncate -s 0 /var/log/auth.log
- 删除已轮转的旧归档(如 .gz 文件)通常安全:
sudo find /var/log -name "*.gz" -mtime +7 -delete
- 收缩 journal(临时措施):
sudo journalctl --vacuum-size=500Msudo journalctl --vacuum-time=7d
- 风险提示:避免直接
rm /var/log/syslog;如确需删除主日志,应先停止写入并重建,或优先使用truncate/logrotate。
- 清空正在写入的日志内容(保留 inode,避免破坏文件句柄):
四 监控与容量规划
- 容量巡检与定位大文件
du -sh /var/logsudo du -ah /var/log | sort -rh | head -n 20
- 观察 journal 占用
sudo journalctl --disk-usage
- 容量规划建议
- 结合业务保留周期与磁盘容量,文本日志建议“size 100–500M + rotate 7–14”,journal 建议“SystemMaxUse 500M–1G”,并保留一定空闲空间(如 SystemKeepFree 100–500M)。
五 常见排错与优化
- 轮转未生效
- 检查 /etc/logrotate.d/rsyslog 语法与包含关系;执行
logrotate -d演练;确认 /etc/cron.daily/logrotate 存在且未被禁用;必要时systemctl restart rsyslog。
- 检查 /etc/logrotate.d/rsyslog 语法与包含关系;执行
- 日志继续写入旧文件
- 确认
postrotate /usr/lib/rsyslog/rsyslog-rotate存在且可执行;若手动清空过日志,可重启 rsyslog 以重建文件句柄。
- 确认
- 日志量异常增长
- 临时提升日志级别或调整 rsyslog 规则,定位“高频写入”来源(如调试日志、错误循环);必要时将日志转发到远程日志服务器以分担本地磁盘压力。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu syslog清理策略
本文地址: https://pptw.com/jishu/762207.html
