温馨提示×

Ubuntu Syslog存储空间管理

小樊
44
2025-11-15 08:11:27
栏目: 云计算

Ubuntu Syslog存储空间管理

一 快速止血与定位

  • 查看整体磁盘与日志占用
    • 查看分区使用:df -h
    • 查看大日志排行:sudo du -ah /var/log | sort -rh | head -n 20
  • 安全释放空间(优先于删除文件)
    • 清空正在写入的日志:sudo truncate -s 0 /var/log/syslog /var/log/auth.log
    • 清理已轮转的旧日志:sudo find /var/log -name “*.gz” -mtime +7 -delete
  • 快速判断“谁在疯狂写日志”
    • 实时看最新内容:sudo tail -n 1000 /var/log/syslog | less
    • 按错误/警告聚焦:sudo grep -iE “error|warn|fail” /var/log/syslog | tail -n 200
  • 如系统使用 journald,一并检查其占用
    • 查看占用:sudo journalctl --disk-usage
    • 快速回收:sudo journalctl --vacuum-time=7d 或 sudo journalctl --vacuum-size=500M

二 长期治理 配置 logrotate 管理 syslog

  • 编辑 rsyslog 的轮转策略
    • 文件路径:sudo nano /etc/logrotate.d/rsyslog
    • 推荐基础策略(按大小触发,保留若干历史)
      /var/log/syslog
      /var/log/auth.log
      {
          size 100M
          rotate 30
          compress
          delaycompress
          missingok
          notifempty
          create 640 syslog adm
          postrotate
              /usr/lib/rsyslog/rsyslog-rotate
          endscript
      }
      
    • 若希望“时间+大小”双触发:在块内加入 daily 与 maxsize 100M(任一条件满足即轮转)
  • 参数要点
    • size:达到指定大小立即轮转
    • maxsize:在周期内达到指定大小即轮转(与 daily/weekly 组合使用)
    • rotate:保留的历史份数
    • compress/delaycompress:压缩旧日志,delaycompress 常用于保留最新一份未压缩便于排查
    • missingok/notifempty:容错与空文件不轮转
    • create:轮转后重建文件并设定权限属主
    • postrotate:通知 rsyslog 重新打开日志文件(避免句柄问题)
  • 测试与生效
    • 语法/演练:sudo logrotate -d /etc/logrotate.d/rsyslog
    • 强制执行:sudo logrotate -f /etc/logrotate.d/rsyslog
    • 无需重启 rsyslog;postrotate 会触发通知

三 控制 systemd journald 日志体积

  • 编辑配置文件:sudo nano /etc/systemd/journald.conf
  • 常用关键项
    • SystemMaxUse=10G:持久化日志最大占用
    • RuntimeMaxUse=10G:运行时(内存)日志最大占用
    • MaxRetentionSec=2week:最长保留时间
  • 使配置生效:sudo systemctl restart systemd-journald
  • 按需回收:sudo journalctl --vacuum-size=500M 或 --vacuum-time=7d

四 源头治理与扩展建议

  • 降低日志噪声(rsyslog)
    • 编辑 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf,收紧级别
      • 例如:*.info;mail.none;authpriv.none;cron.none 调整为 *.warning;mail.none;authpriv.none;cron.none
  • 容器场景
    • 限制 Docker 容器日志大小(避免单个容器日志无限膨胀)
      • Docker Compose 示例:
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "3"
        
  • 远程集中化
    • 将日志发往远程日志服务器,减轻本机磁盘压力
      • 在 rsyslog 配置中:. @remote_server_ip:514(UDP)或 @@remote_server_ip:514(TCP)
  • 监控与告警
    • 定期检查 /var/log 增长,结合监控报警,提前干预异常日志风暴

0