温馨提示×

为何linux syslog缺失

小樊
37
2026-08-25 17:24:58
栏目: 智能运维

Linux 的 syslog 缺失或不工作 通常不是“没有 syslog”,而是日志系统发生了变化或配置/服务异常。下面按常见原因系统说明,并给出排查方法。


一、最常见原因:系统已改用 systemd-journald

1️⃣ 现代 Linux 默认不再使用传统 syslog

很多发行版(CentOS 7+、RHEL 7+、Ubuntu 16.04+)默认 不再安装 rsyslog / syslog-ng,而是使用:

systemd-journald

日志查看方式也变了:

journalctl
journalctl -xe
journalctl -u sshd

这是最常见原因


二、syslog 服务未安装或未启动

2️⃣ rsyslog / syslog-ng 未安装

检查是否安装:

rpm -qa | grep rsyslog        # CentOS/RHEL
dpkg -l | grep rsyslog        # Ubuntu/Debian

如未安装:

# Ubuntu / Debian
sudo apt install rsyslog

# CentOS / RHEL
sudo yum install rsyslog

3️⃣ syslog 服务未启动

systemctl status rsyslog

启动并设置开机自启:

sudo systemctl start rsyslog
sudo systemctl enable rsyslog

三、日志路径变化或不存在

4️⃣ /var/log/messages 等文件缺失

不同系统日志路径不同:

系统 默认日志
CentOS / RHEL /var/log/messages
Ubuntu /var/log/syslog
旧系统 /var/log/messages

检查:

ls -l /var/log/

如果只有:

journal/

说明 只启用了 journald


四、rsyslog 配置问题

5️⃣ rsyslog 配置被修改或禁用

检查配置:

cat /etc/rsyslog.conf
ls /etc/rsyslog.d/

常见问题:

  • 日志规则被注释
  • stop 规则阻断
  • 输出路径不存在

重启 rsyslog:

sudo systemctl restart rsyslog

五、磁盘或权限问题(容易被忽略)

6️⃣ /var/log 磁盘满

df -h /var/log

7️⃣ 日志文件权限异常

ls -ld /var/log
ls -l /var/log/syslog

修复示例:

chown root:adm /var/log/syslog
chmod 640 /var/log/syslog

六、容器 / 云主机 / 嵌入式系统

8️⃣ 容器中没有 syslog

Docker / Kubernetes 中:

  • 没有 rsyslog
  • 日志输出到 stdout

查看方式:

docker logs 容器ID

七、日志被 journald 接管但未持久化

9️⃣ journal 日志未写入磁盘

查看:

journalctl --disk-usage

如为 0 或很小,可能未持久化。

开启持久化:

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

八、快速判断 checklist ✅

你可以按顺序检查:

# 1. 是否使用 systemd
ps -ef | grep systemd

# 2. 是否有 rsyslog
which rsyslogd

# 3. 服务状态
systemctl status rsyslog

# 4. 日志路径
ls /var/log/

# 5. journal 日志
journalctl -n 50

九、总结一句话

Linux syslog “缺失” 90% 是因为系统已改用 systemd-journald,而不是真的没有日志。

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

  • 发行版 + 版本
  • 是服务器 / 桌面 / 容器
  • /var/log 目录内容

我可以 精确判断你这台机器该用哪种日志系统,并给出修复方案

0