温馨提示×

为何CentOS message无记录

小樊
79
2026-07-20 16:01:20
栏目: 智能运维

CentOS 中 messages 无记录(/var/log/messages 没有内容或为空),通常不是“日志丢了”,而是日志系统配置或写入方式发生了变化。下面按最常见原因逐条说明。


一、最常见原因:CentOS 7+ 默认不再使用 /var/log/messages

✅ CentOS 7 / 8 / Stream 使用 systemd-journald

CentOS 7 开始

  • rsyslog 默认可能未安装或未启用
  • 日志默认写入 journald,而不是 /var/log/messages

检查方式

ls -l /var/log/messages
journalctl

如果:

  • /var/log/messages 不存在或为空
  • journalctl 有日志

✅ 说明系统使用的是 journal


二、rsyslog 未安装或未启动(最常见)

1️⃣ 检查 rsyslog 是否安装

rpm -qa | grep rsyslog

如果没有输出:

yum install -y rsyslog

2️⃣ 检查 rsyslog 是否运行

systemctl status rsyslog

如果未运行:

systemctl enable rsyslog
systemctl start rsyslog

三、/var/log/messages 被 rsyslog 配置排除

查看 rsyslog 配置

grep -R messages /etc/rsyslog.conf /etc/rsyslog.d/

正常应有类似:

*.info;mail.none;authpriv.none;cron.none    /var/log/messages

如果:

  • 没有这一行
  • 或被 stop / ~ 丢弃

✅ 日志不会写入 messages


四、日志级别过滤导致“看起来没记录”

常见误区

  • messages 默认 不记录 debug / info 以下
  • 很多服务日志级别是 debuginfo

可以临时测试

logger -p info "test message"
tail -f /var/log/messages

五、磁盘 / inode / 权限问题

1️⃣ 磁盘满

df -h

2️⃣ inode 满

df -i

3️⃣ 文件权限异常

ls -l /var/log/messages

应为:

-rw-r----- root root

六、SELinux 阻止写入(较少见)

getenforce

如果是 Enforcing,可临时测试:

setenforce 0

七、CentOS 8 / Stream 的特殊情况

CentOS 8 默认:

  • rsyslog 不自动启用
  • journald 默认 不转发到 syslog

解决

yum install rsyslog
systemctl enable --now rsyslog

并确保:

/etc/rsyslog.conf

中有:

module(load="imjournal")

八、快速判断总结表

现象 原因
messages 为空 使用 journald
messages 不存在 rsyslog 未安装
无新日志 rsyslog 未启动
部分日志缺失 rsyslog 规则过滤
磁盘满 无法写入
CentOS 8 默认无 rsyslog

✅ 推荐做法(现代 CentOS)

查看系统日志

journalctl -xe
journalctl -u sshd
journalctl --since today

若你必须使用 /var/log/messages

yum install rsyslog
systemctl enable --now rsyslog

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(cat /etc/redhat-release
  • ✅ 是否新装系统
  • ✅ 具体想查哪种日志(如 ssh / 内核 / 应用)

我可以给你精确到配置文件的解决方案

0