温馨提示×

为何linux syslog过大

小樊
43
2026-10-16 10:11:37
栏目: 智能运维

Linux 中 syslog 过大是一个很常见的问题,通常不是“某一个原因”,而是几类原因叠加。下面按最常见 → 较少见来说明,并给出对应解决思路。


一、最常见原因

1. 系统或应用日志级别太低(DEBUG / INFO 太多)

很多服务(如 Docker、Kubernetes、NetworkManager、桌面环境)默认会输出大量日志。

表现:

  • /var/log/syslog 或 /var/log/messages 每小时增长几十 MB
  • 内容里大量重复 debug、info

解决:

  • 修改服务日志级别(如 systemd 服务加 LogLevel=warning)
  • 应用配置里关闭 debug 模式

2. 服务异常疯狂写日志(死循环 / 报错不断)

例如:

  • 网络断连,服务不断重试
  • 权限错误(Permission denied)每秒几百次
  • 磁盘满导致写失败又重试

表现:

  • 同一错误日志高频重复
  • 日志时间连续无中断

解决:

journalctl -p err -b

定位异常服务并修复根因。


3. 没有日志轮转(logrotate 未生效)

常见于:

  • 自定义服务直接写 syslog
  • 容器环境
  • 手动改过 /etc/logrotate.d/

表现:

  • 单个 syslog 文件几个 GB
  • 没有 .1 .2.gz 文件

检查:

ls -lh /var/log/
cat /etc/logrotate.d/rsyslog

4. systemd-journald 与 syslog 重复记录

现代 Linux 常同时有:

  • journald
  • rsyslog / syslog-ng

两者都存一份,磁盘占用翻倍。

解决:

  • 禁用 rsyslog 或
  • 限制 journald 大小:
# /etc/systemd/journald.conf
SystemMaxUse=500M

二、次常见原因

5. 内核日志过多(dmesg 刷屏)

如:

  • 网卡频繁 up/down
  • USB 设备异常
  • 文件系统错误

查看:

dmesg -T | tail -n 50

6. 审计日志(auditd)写入 syslog

安全策略过严会记录大量系统调用。

检查:

ausearch | head

7. 日志被持续追加但未消费

如:

  • 日志服务挂了
  • 管道阻塞
  • 容器 stdout 被转发到 syslog

三、快速排查步骤(推荐)

# 1. 看哪个文件最大
du -sh /var/log/* | sort -h

# 2. 看最近日志内容
tail -n 100 /var/log/syslog

# 3. 看错误日志
journalctl -p err -b

# 4. 看日志轮转状态
logrotate -d /etc/logrotate.conf

四、常见合理上限建议

  • 单台服务器 syslog:< 500MB
  • journald:< 1GB
  • 日志保留:7–30 天

如果你愿意,可以把下面信息发我,我可以帮你精准判断:

  • 发行版(Ubuntu / CentOS / Debian)
  • du -sh /var/log/* 输出
  • 最近 20 行 syslog 内容

0 踩