CentOS日志文件清理策略是什么
导读:CentOS 日志清理策略 策略总览 采用“轮转 + 压缩 + 保留策略”为主、按时间与容量清理为辅、持久化限制兜底的组合方式,覆盖 systemd-journald 日志与 /var/log 传统文本日志两大来源,确保日志可控、可回溯且...
CentOS 日志清理策略
策略总览
- 采用“轮转 + 压缩 + 保留策略”为主、按时间与容量清理为辅、持久化限制兜底的组合方式,覆盖 systemd-journald 日志与 /var/log 传统文本日志两大来源,确保日志可控、可回溯且不占满磁盘。核心工具为 logrotate(按天/按大小轮转、压缩、删除旧文件)与 journalctl(按时间/容量清理、限制上限)。
systemd journal 日志策略
- 容量与保留策略
- 查看占用:
journalctl --disk-usage - 按时间清理:
journalctl --vacuum-time=7d(保留最近 7 天) - 按容量清理:
journalctl --vacuum-size=500M(最大保留 500MB)
- 查看占用:
- 持久化上限(重启后仍生效)
- 创建配置:
/etc/systemd/journald.conf.d/limits.conf - 建议值:
[Journal]SystemMaxUse=1GRuntimeMaxUse=500M
- 使生效:
systemctl restart systemd-journald
- 创建配置:
- 安全操作提示
- 不建议直接
rm -rf /var/log/journal/*;如需手工回收,先触发一次日志轮转:systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service,再执行journalctl --vacuum-*清理。
- 不建议直接
传统文本日志与 logrotate 策略
- 配置位置与机制
- 主配置:
/etc/logrotate.conf;应用配置:/etc/logrotate.d/* - 默认由 cron 每日任务驱动(无需额外常驻进程)
- 主配置:
- 通用建议(示例)
- 周期:
daily或weekly - 保留:
rotate 14(保留 14 个归档) - 压缩:
compress(节省空间) - 条件:
missingok、notifempty - 新建:
create 0640 root adm - 触发:
postrotate /bin/systemctl reload rsyslog.service > /dev/null 2> & 1(按实际服务调整)
- 周期:
- 按大小触发与预演
- 按大小:
size 100M(达到 100MB 即轮转) - 预演:
logrotate -d /etc/logrotate.d/myapp(不真正执行,检查规则) - 强制:
logrotate -f /etc/logrotate.d/myapp(立即执行一次)
- 按大小:
- 典型服务示例(Nginx)
/var/log/nginx/*.log { daily; rotate 14; compress; missingok; notifempty; create 0644 nginx nginx; sharedscripts; postrotate /bin/kill -USR1 \cat /run/nginx.pid 2> /dev/null` || true; endscript } `
- 重要提示
- 避免直接删除正在写入的日志文件;使用
copytruncate可在不停服务的情况下清空原文件,但存在极小概率丢日志的风险,优先选择“reload/USR1 通知应用重开日志文件”。
- 避免直接删除正在写入的日志文件;使用
按时间清理与临时文件
- 按时间清理旧日志(谨慎)
- 示例:
find /var/log -type f -name "*.gz" -mtime +30 -delete(删除 30 天前的压缩日志) - 原则:只删除已轮转归档(如
.gz、.old),避免对正在写入的.log直接rm或>清空
- 示例:
- 临时文件与缓存
- 临时目录:
tmpwatch --mtime 48 /tmp /var/tmp(清理 48 小时未访问的临时文件) - 包管理缓存:
yum clean all - 旧内核(需安装 yum-utils):
package-cleanup --oldkernels --count=2(保留最近 2 个内核,操作前用uname -r确认当前内核)
- 临时目录:
自动化与监控落地
- 定时执行
- logrotate 默认由 /etc/cron.daily/logrotate 每日执行;如需自定义频率,可在
/etc/cron.d/添加任务或放入/etc/cron.hourly|daily|weekly|monthly目录
- logrotate 默认由 /etc/cron.daily/logrotate 每日执行;如需自定义频率,可在
- 容量告警与巡检
- 巡检命令:
df -hT、du -h /var/log --max-depth=1 | sort -hr | head -n20 - 建议设置磁盘使用率阈值告警(如 80%),提前介入清理或扩容
- 巡检命令:
- 变更与验证
- 规则调整后先
logrotate -d预演,再logrotate -f强制一次,确认轮转、压缩、清理与通知动作均符合预期。
- 规则调整后先
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS日志文件清理策略是什么
本文地址: https://pptw.com/jishu/787816.html
