默认情况下,Linux 系统日志(如 /var/log/messages
)的保留周期可能较短(例如仅保留 4 周)。本文记录如何通过修改 logrotate
配置,将日志生命周期调整为 保留 180 天,并实现每日轮转、压缩存储。
解决方案概述
- 工具:使用
logrotate
(Linux 日志轮转管理工具)。 - 核心配置:
- 将
/var/log/messages
独立配置,设置daily
(每日轮转)和rotate 180
(保留 180 份)。 - 其他日志(如
/var/log/cron
)保持默认策略。
- 将
- 效果:每日生成一个压缩日志文件(如
messages-YYYYMMDD.gz
),自动清理 180 天前的旧日志。
操作步骤
1、定位配置文件
日志轮转配置位于 /etc/logrotate.d/syslog
:
cat /etc/logrotate.d/syslog
2、修改配置
将 /var/log/messages
分离为独立配置块:
# 其他日志保持默认配置(按周轮转,保留4份)
/var/log/cron
/var/log/maillog
/var/log/secure
/var/log/spooler
/var/log/kern
{
missingok
sharedscripts
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
# 单独配置 messages 保留 180 天
/var/log/messages {
daily # 每日轮转
rotate 180 # 保留 180 份
compress # 启用压缩
dateext # 日期后缀命名(如 messages-20250415.gz)
delaycompress # 延迟压缩前一个日志
missingok # 日志不存在时不报错
notifempty # 空文件不轮转
sharedscripts
postrotate
# 发送 HUP 信号通知 rsyslog 重新打开日志文件
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
复制过去之后记得把#删除了
3、手动测试配置
sudo logrotate -vf /etc/logrotate.d/syslog
-v
:显示详细过程。-f
:强制立即轮转。
4、验证结果
ls -lth /var/log/messages*
输出示例:
-rw------- 1 root root 10M Apr 15 00:00 /var/log/messages
-rw------- 1 root root 2.1M Apr 14 00:00 /var/log/messages-20250414.gz
-rw------- 1 root root 2.0M Apr 13 00:00 /var/log/messages-20250413.gz
...
配置解析
参数 | 作用 | 必要性 |
---|---|---|
daily |
每日轮转(覆盖默认的 weekly ) |
关键 |
rotate 180 |
保留 180 份旧日志(按天数) | 关键 |
compress |
启用 gzip 压缩节省空间 | 推荐 |
dateext |
使用日期后缀命名(而非序号) | 可选 |
delaycompress |
延迟压缩前一个日志(避免漏压) | 可选 |
postrotate |
轮转后通知 rsyslog 重新加载文件 | 必要 |
验证与生效
1、定时任务:logrotate 通过 cron
每日自动运行
cat /etc/cron.daily/logrotate
2、轮转记录:
grep logrotate /var/log/cron
3、保留策略:每日检查 /var/log/messages-*.gz
文件数量,确认总数稳定在 180 个左右。
注意事项
1、磁盘空间:确保 /var/log
目录有足够空间存储 180 天日志。
df -h /var/log
2、压缩效果:压缩后日志大小通常减少 70%~90%,但需权衡 CPU 开销。
3、时间同步:确保系统时间准确(NTP 同步),避免轮转异常。
4、回滚配置:若需恢复默认,删除 /var/log/messages
的独立配置块即可。
总结
通过调整 logrotate
配置,我们实现了:
- 精准控制:仅修改
/var/log/messages
的保留策略,不影响其他日志。 - 自动化管理:每日轮转、压缩、清理旧日志。
- 透明可查:通过日期后缀清晰追踪日志时间范围。
完整配置已通过实际环境验证,可直接应用于 CentOS、Alibaba Cloud Linux 等基于 RHEL 的发行版。
本文作者:卷饼
评论列表 (0条):
加载更多评论 Loading...