这个坑值得记一笔。等保测评要求日志留存半年,CentOS 7 上 /etc/logrotate.d/syslog 里是 weekly 加 rotate 4,实际只有四周的 messages,测评当场被扣分,运维以为改 rotate 就够了。

把日志和配置对完,能解释这个现象的基本就这几处。rotate 是份数不是天数,周切留四份就是二十八天;配置里还有 maxage 30,超过三十天的文件会被主动删掉;压缩后老文件仍按一份计,份数看着够实际天数不够。

第一件事是看现有配置与文件

grep -E 'weekly|rotate|maxage' /etc/logrotate.d/syslog; ls /var/log/messages*

然后改成按天切留一百八十份

daily  rotate 180  dateext

去掉提前删除的项

sed -i '/^ *maxage /d' /etc/logrotate.d/syslog

空跑确认计划

logrotate -d /etc/logrotate.d/syslog | grep -i rotate

同事提醒我看一下最近一次发布,时间点确实对得上。

怎么算真的好了,看的是同一批现象。/var/log 下出现 messages-20260101 这类按日期命名的文件且数量随时间增长,logrotate -d 输出里 rotate 为 180,df 余量足以支撑。

这里还有个坑。份数和天数要换算,按天切才是天数等于份数;日志目录最好单独分区,否则合规天数还没到盘先满了。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189