温馨提示×

linux syslog怎样排错

小樊
45
2026-10-01 19:02:27
栏目: 智能运维

在 Linux 里用 syslog / rsyslog / syslog-ng 排错,通常遵循“先看日志 → 再查服务 → 再看配置 → 最后看权限和磁盘”的思路。下面按实战流程说明。


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

ps -ef | grep -E "rsyslog|syslog-ng|syslogd"

常见情况:

  • rsyslogd:最常见(RHEL/CentOS/Ubuntu)
  • syslog-ng:部分发行版
  • systemd-journald:现代系统(journalctl)

二、查看日志本身(最重要)

1. 传统日志文件

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

查看示例:

tail -f /var/log/messages
grep sshd /var/log/secure

2. systemd 系统(推荐)

journalctl -xe
journalctl -u rsyslog
journalctl _COMM=sshd

三、syslog 服务排错

1. 检查服务状态

systemctl status rsyslog

常见问题:

  • failed
  • active (exited) 但其实没写日志

2. 重启服务

systemctl restart rsyslog

3. 看服务自身报错

journalctl -u rsyslog -xe

四、配置文件排错(rsyslog 为例)

配置文件:

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

常见错误

  • 语法错误
  • 规则顺序不对
  • 目标文件不存在或无权限

校验配置

rsyslogd -N1

输出示例(有错会直接提示):

rsyslogd: version ...
error: ....

五、日志不写的常见原因

1. 磁盘满了

df -h

2. inode 用尽

df -i

3. 文件权限问题

ls -l /var/log/messages

确保:

  • rsyslog 用户可写
  • 目录权限正确

4. SELinux 拦截(RHEL/CentOS)

ausearch -m AVC -ts recent
setenforce 0   # 临时关闭测试

六、远程 syslog 排错

客户端

*.* @192.168.1.10:514

服务端

module(load="imudp")
input(type="imudp" port="514")

测试:

logger "test syslog"

在服务端看是否收到。


七、常用调试命令

logger "hello syslog"
tcpdump -i any udp port 514
lsof -i :514

八、排错 checklist(速查)

✅ 服务是否运行
✅ 配置是否通过 -N1
✅ 日志文件是否存在
✅ 磁盘 / inode 是否正常
✅ 权限 / SELinux
✅ 远程端口是否通


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

  • 发行版(CentOS / Ubuntu / Rocky…)
  • 用的 syslog 类型
  • 具体现象(日志不写 / 远程收不到 / 服务起不来)

我可以直接帮你定位。

0 踩