温馨提示×

如何通过Ubuntu日志优化磁盘使用

小樊
42
2025-12-29 14:30:45
栏目: 智能运维

Ubuntu日志优化磁盘使用的实操指南

一 快速定位占用

  • 查看 systemd 日志占用:运行命令:sudo journalctl --disk-usage,确认是否由 journald 占用过多空间。
  • 查看传统日志目录:运行命令:sudo du -sh /var/log,定位 /var/log 下的大文件或子目录。
  • 实时监控与排查:用 tail -f /var/log/sysloggrepawk 等快速筛查异常输出或高频日志来源。

二 清理与压缩现有日志

  • 清理 systemd 日志(journald):
    • 按时间保留:sudo journalctl --vacuum-time=7d(保留最近 7 天)。
    • 按大小保留:sudo journalctl --vacuum-size=500M(保留最近 500MB)。
    • 按服务清理:sudo journalctl --vacuum-by-service=ssh.service(示例为 ssh.service)。
  • 清理传统文本日志(/var/log):
    • 清空而非删除正在写入的日志:sudo truncate -s 0 /var/log/syslog;必要时对 /var/log/auth.log 等执行相同操作。
    • 删除已轮转的旧文件:sudo rm /var/log/*.gz;如需删除 syslog.1 等历史轮转文件,建议先重启 rsyslogsudo systemctl restart rsyslog)以避免写入冲突。
  • 立即触发一次轮转(让 logrotate 压缩与清理生效):sudo logrotate -f /etc/logrotate.conf

三 配置自动轮转与压缩 logrotate

  • 编辑 rsyslog 的轮转策略:sudo nano /etc/logrotate.d/rsyslog,示例:
    • 按大小触发:/var/log/syslog { size 100M; rotate 4; compress; delaycompress; missingok; notifempty; create 0640 root adm }
    • 按天触发:/var/log/syslog { daily; rotate 7; compress; delaycompress; missingok; notifempty; create 0640 root adm }
  • 说明:
    • size 100M 表示文件达到 100MB 即轮转;daily 表示按天轮转。
    • rotate 4/7 表示保留 4/7 个历史副本;compressdelaycompress 用于压缩节省空间;create 指定新日志文件的权限与属主。

四 从源头减少日志量

  • 调整 rsyslog 日志级别:编辑 /etc/rsyslog.conf/etc/rsyslog.d/50-default.conf,将 *.info;mail.none;authpriv.none;cron.none 调整为 *.warning;mail.none;authpriv.none;cron.none,减少 info 级别日志。
  • 限制 journald 增长:编辑 /etc/systemd/journald.conf,按需设置如 SystemMaxUse=500MSystemMaxFileSize=100M,保存后重启 systemd-journaldsudo systemctl restart systemd-journald)。
  • 减少不必要服务日志:对不需要的服务执行 sudo systemctl disable service_name;对应用(如 Apache/Nginx)可在其配置中降低日志级别或关闭访问日志(视业务而定)。
  • 启用异步日志(若应用支持):可降低同步写入带来的 I/O 压力。

五 建立长期维护机制

  • 定时清理 journald:在 crontab -e 中添加任务,例如每天 01:00 保留最近 7 天0 1 * * * journalctl --vacuum-time=7d
  • 定时触发 logrotate:例如每天 02:00 强制执行:0 2 * * * /usr/sbin/logrotate -f /etc/logrotate.conf
  • 持续监控:定期查看 journalctl --disk-usagedu -sh /var/log,并结合 logwatchELK StackGraylog 做可视化与告警。

注意事项

  • 清理日志前建议备份关键日志;避免直接删除正在写入的日志文件,优先使用 truncate -s 0 或让 logrotate 处理。
  • 修改 rsyslogjournald 配置后,按需重启服务(如 sudo systemctl restart rsyslogsudo systemctl restart systemd-journald)。
  • 生产环境调整日志级别与保留策略时,兼顾审计与合规要求,确保保留足够的历史用于故障排查与安全审计。

0