You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2实例磁盘快速占满,删除10GB系统日志后9小时再次耗尽求助

解决EC2实例中syslog快速占满磁盘的问题

先定位日志暴增的根源

  • 实时监控syslog输出,快速定位疯狂打日志的服务:
    tail -f /var/log/syslog
    
  • 统计日志中重复次数最多的条目,精准锁定异常源:
    awk '{print $0}' /var/log/syslog | sort | uniq -c | sort -nr | head -20
    
  • 过滤错误/警告日志,缩小排查范围:
    grep -E "(error|warning|critical)" /var/log/syslog
    

临时缓解磁盘占用

  • 不要直接删除日志文件:进程可能仍持有文件句柄,删除后磁盘空间不会立刻释放。正确的清空方式:
    echo "" > /var/log/syslog
    # 或用truncate更安全
    truncate -s 0 /var/log/syslog
    
  • 手动触发日志轮转,将当前日志归档压缩:
    # 针对rsyslog配置触发
    logrotate -f /etc/logrotate.d/rsyslog
    # 或全局触发轮转
    logrotate -f /etc/logrotate.conf
    

永久解决日志暴增问题

  1. 调低服务日志级别
    找到异常服务的配置文件,将日志输出级别从debug(最详细)调整为info或warn,减少冗余日志。比如:

    • Nginx:修改nginx.conf里的error_log参数,从debug改为warn
    • 自定义应用:调整代码中的日志逻辑,关闭非必要的调试日志
  2. 优化日志轮转策略
    修改syslog的轮转配置(以rsyslog为例,路径为/etc/logrotate.d/rsyslog),设置更严格的规则:

    /var/log/syslog
    {
        rotate 3          # 仅保留最近3天的日志
        daily             # 每天轮转一次
        missingok         # 日志文件不存在时跳过
        notifempty        # 空文件不轮转
        compress          # 压缩旧日志
        delaycompress     # 延迟压缩,避免影响当前日志写入
        sharedscripts
        postrotate
            /usr/lib/rsyslog/rsyslog-rotate
        endscript
    }
    
  3. 启用日志速率限制
    在rsyslog主配置文件/etc/rsyslog.conf中添加速率限制规则,防止短时间内日志暴增:

    $SystemLogRateLimitInterval 10  # 统计时间窗口(10秒)
    $SystemLogRateLimitBurst 100    # 窗口内允许的最大日志条数
    

    超出限制的日志会被自动丢弃,避免磁盘被快速占满。

  4. 排查循环日志问题
    用lsof | grep syslog查看哪些进程在写入syslog,检查是否存在服务日志递归写入的情况(比如某个服务把日志输出到被自身监控的路径),导致日志无限增长。

内容的提问来源于stack exchange,提问作者Monad Wizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:32:35