温馨提示×

linux syslog如何排错

小樊
42
2026-09-25 23:53:06
栏目: 智能运维

在 Linux 里,syslog 排错通常分三步:
1️⃣ 确认日志系统是否在运行
2️⃣ 确认日志写到了哪里
3️⃣ 根据现象定位问题(不写日志 / 写错地方 / 日志丢失 / 权限问题)

下面按实战角度说明。


一、先确认你用的是哪种 syslog

不同发行版不一样:

发行版 日志系统
CentOS 6 rsyslog / syslogd
CentOS 7+ rsyslog + systemd-journald
Ubuntu 16.04+ rsyslog + journald
老系统 syslog-ng

查看:

ps -ef | grep -E "rsyslog|syslog|journal"

二、检查 syslog 服务状态

systemd 系统

systemctl status rsyslog
journalctl -u rsyslog

如果没运行:

systemctl start rsyslog
systemctl enable rsyslog

三、确认日志文件位置

常见位置:

/var/log/messages      # CentOS
/var/log/syslog        # Ubuntu
/var/log/secure        # 认证
/var/log/cron

查看 rsyslog 配置:

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

示例规则:

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

四、常见排错场景

1️⃣ 完全没有日志

✅ 检查服务是否运行
✅ 检查磁盘是否满

df -h

✅ 检查 inode

df -i

2️⃣ 程序日志没写进来

测试 syslog:

logger "test syslog message"

然后看:

tail -f /var/log/messages

如果看不到:

  • 检查程序是否调用 /dev/log
  • 检查 rsyslog 规则是否过滤掉了

3️⃣ journald 有,文件没有

说明 rsyslog 没读 journal:

vim /etc/rsyslog.conf

确保有:

module(load="imjournal")

重启:

systemctl restart rsyslog

4️⃣ 日志被 rotation 弄丢

检查:

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

5️⃣ 权限问题

日志文件权限:

ls -l /var/log/messages

常见应为:

-rw------- root root

五、结合 systemd 排错(强烈推荐)

journalctl -xe
journalctl -u nginx
journalctl --since "10 min ago"

六、排错 checklist(速查)

systemctl status rsyslog
df -h
df -i
logger test
tail -f /var/log/messages
journalctl -xe

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

  • 发行版(CentOS / Ubuntu)
  • 具体问题(不写日志 / 丢日志 / 配置不生效)

我可以直接帮你给针对性排查命令或配置示例。

0 踩