首页/安全/安全加固速查/logrotate 策略核查与演练

logrotate 策略核查与演练

轮转配错最常见的后果是日志被误清或磁盘写满:先用 -d 干跑看动作,再真跑;核查保留份数与压缩策略。

安全加固速查安全更新于 2026-10-13

轮转配错的两种后果

logrotate 配置写错的典型结果只有两种:日志被过早清掉(审计要求留存半年,实际只剩七天),或者根本没轮转(磁盘被写满,业务连带中断)。它每天由定时任务静默执行,配置错误往往在出事那天才被发现,因此上线前干跑演练很有必要。

基本信息

适用平台Linux(logrotate 由 cron 或 systemd timer 触发)
主配置/etc/logrotate.conf 与 /etc/logrotate.d/ 下的服务配置
关键参数rotate、size、maxage、compress、copytruncate/create
必备动作改配置后先用 -d 干跑验证

典型使用场景

  • 审计要求留存:确认安全日志与访问日志满足保存周期
  • 磁盘告警排查:定位是哪些日志没有轮转或保留过多份
  • 变更前演练:调整策略前用 -d 看实际动作,避免误删日志
  • 新服务接入:为自研服务补充 logrotate 配置,否则日志会无限增长

演练与核查

演练与核查
# 干跑演练:只打印动作,不实际执行
logrotate -d /etc/logrotate.conf 2>&1 | head -30
# 对单个配置强制轮转一次(谨慎,会真的轮转)
logrotate -f /etc/logrotate.d/nginx
# 查看保留与压缩策略
grep -rE 'rotate|maxage|size|compress' /etc/logrotate.d/ | head -20
# 确认触发方式在跑
systemctl list-timers | grep -i logrotate; ls /etc/cron.daily/ | grep logrotate

参数读法

参数含义风险点
rotate N保留 N 份历史日志份数过少不满足留存要求
maxage按天数删除旧日志与 rotate 同时使用要理解优先级
size / daily触发条件配置不当会导致长期不轮转
copytruncate拷贝后清空原文件有丢失窗口,但与不支持重开的程序兼容
create轮转后新建文件与 copytruncate 二选一,混用会出问题
干跑能提前暴露配置错误:线上日志被误清的案例,绝大多数是改完配置没有 -d 演练就直接等定时任务执行。
轮转依赖 cron 或 timer 正常运行:crond 停摆时轮转不会执行,核查配置的同时要确认调度服务在运行。
交付验收时把「策略文件 + 最近一次轮转时间 + 实际文件列表」三项一起留档:只看策略文件无法证明它真的被执行过,出事后也无法解释日志为何缺失。

易错点

  • copytruncate 与 create 混用:日志出现空洞或服务写入失败,改前先读懂原配置意图
  • 只改配置不演练:定时任务执行后才发现日志被清空
  • 忽略调度服务状态:crond 或 timer 停摆,配置再对也不会轮转
  • 轮转后不通知服务:部分程序持有文件句柄,需要 reload 才会写到新文件

数据来源与参考

  • logrotate(8) man page
  • CIS Linux Benchmark:日志轮转

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌