温馨提示×

centos syslog为什么丢失

小樊
37
2026-10-17 13:52:39
栏目: 智能运维

CentOS 上 syslog(或 rsyslog/systemd-journald)日志“丢失”是很常见的问题,通常不是真的没产生,而是被过滤、覆盖、轮转或存储机制导致看不到。下面按最常见原因逐个说明,并给出排查方法。


一、CentOS 日志系统组成(先搞清楚“丢的是哪一类”)

CentOS 7+ 一般有两套:

  • rsyslog:传统 syslog,写 /var/log/messages、/var/log/secure 等
  • systemd-journald:二进制日志,journalctl 查看

很多“syslog 丢失”其实是:

  • /var/log/messages 没内容
  • 或 journalctl 查不到旧日志

二、最常见原因(90% 在这里)

1️⃣ 日志被 rsyslog 规则过滤掉了

rsyslog 配置可能丢弃了某些日志。

检查:

vim /etc/rsyslog.conf
vim /etc/rsyslog.d/*.conf

常见问题:

  • 有 *.none 规则
  • 某些服务被重定向到别文件
  • 使用了 stop 导致后续不写

示例(错误写法):

*.* stop

✅ 解决:确认没有被 stop 或 none 屏蔽


2️⃣ 日志轮转(logrotate)后文件被清空或删除

CentOS 默认每天轮转:

/var/log/messages
/var/log/secure

可能原因:

  • 轮转后旧日志被压缩(messages-20240101.gz)
  • 或 rotate 0 直接删了
  • 或脚本出错,文件被 truncate

检查:

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

✅ 如果你只看了 messages 而没看 messages-* 就会以为“丢了”


3️⃣ journald 日志被限制大小或被清掉(非常常见)

systemd-journald 默认不是永久保存

查看配置:

cat /etc/systemd/journald.conf

关键参数:

Storage=auto
SystemMaxUse=10%
SystemKeepFree=15%
MaxRetentionSec=

如果:

  • Storage=volatile → 重启就没
  • 磁盘满 → 自动清旧日志

查看当前:

journalctl --disk-usage

✅ 解决(永久保存):

Storage=persistent

然后:

mkdir -p /var/log/journal
systemctl restart systemd-journald

4️⃣ /var 分区满了(日志直接被丢弃)

rsyslog 在磁盘满时不会报错,直接丢

检查:

df -h

如果 /var 100%:

  • 日志写不进去
  • rsyslog 可能静默失败

✅ 清空间 / 增大分区


5️⃣ rsyslog 服务没运行或崩溃

systemctl status rsyslog
journalctl -u rsyslog

常见问题:

  • 配置文件语法错误
  • 被误 stop
  • OOM 被杀

✅ 修复配置后:

systemctl restart rsyslog

6️⃣ 应用根本没走 syslog

很多程序:

  • 直接写自己的 log 文件
  • 或只支持 stdout
  • 或需要显式配置 syslog

例如:

  • Docker 默认不写 rsyslog
  • Nginx 默认写 /var/log/nginx

✅ 检查应用配置是否启用了 syslog


三、快速自查清单(建议你一步步来)

# 1. 服务是否在
systemctl status rsyslog
systemctl status systemd-journald

# 2. 磁盘
df -h

# 3. 日志文件
ls -lh /var/log/

# 4. journal 是否持久
cat /etc/systemd/journald.conf | grep Storage

# 5. 实时看日志
tail -f /var/log/messages
journalctl -f

四、如果你愿意,我可以更精准帮你

你可以补充:

  1. CentOS 版本(cat /etc/redhat-release)
  2. 丢的是 哪个日志
  3. 是 重启后丢 还是 运行中慢慢没
  4. 用的 rsyslog 还是 journalctl

我可以直接帮你定位配置问题。

0 踩