温馨提示×

debian syslog为何启动慢

小樊
46
2026-09-20 22:59:31
栏目: 智能运维

Debian 上 syslog(通常是 rsyslog / syslog-ng)启动慢,常见原因可以分成几类。下面按实际运维中最常遇到的情况说明,并给出排查方法。


一、最常见原因

1. 等待网络(DNS / 远程日志)

如果 syslog 配置中:

  • 使用 远程日志服务器(@logserver / @@logserver)
  • 使用 主机名解析
  • 启用了 DNS 反向解析

系统启动时会 阻塞等待网络或 DNS

✅ 表现:

  • 启动卡在 rsyslog.service
  • systemd-analyze blame 中时间很长

✅ 解决:

# /etc/rsyslog.conf 或子配置
$OmitLocalLogging on
$ActionResumeRetryCount -1
$ActionQueueType LinkedList

或:

# 不解析主机名
$PreserveFQDN off

如果是远程日志:

*.* @@logserver:514

改为:

*.* @@logserver:514;RSYSLOG_SyslogProtocol23Format

并确保:

systemctl disable systemd-resolved  # 或正确配置 DNS

2. /var/log 在慢存储或网络文件系统

如果:

  • /var/logNFS / iSCSI / 加密磁盘
  • 磁盘未解锁就启动 syslog

✅ 检查:

mount | grep var/log
lsblk

✅ 解决:

  • 延迟 syslog 启动:
systemctl edit rsyslog
[Unit]
After=local-fs.target

3. systemd 等待超时(默认 90s)

如果 syslog 启动失败但未退出,systemd 会等很久。

✅ 检查:

systemctl status rsyslog
journalctl -u rsyslog

✅ 修改超时:

systemctl edit rsyslog
[Service]
TimeoutStartSec=10

二、配置或模块问题

4. 加载了不必要的模块

例如:

  • imtcp / imudp 但没用
  • mmnormalize / omkafka 等复杂模块

✅ 精简:

grep -R "Module" /etc/rsyslog.conf /etc/rsyslog.d/

5. 日志文件权限或磁盘满

  • /var/log
  • inode 用尽

✅ 检查:

df -h
df -i

三、systemd 启动顺序问题

6. 被错误地设为 Requires=network

systemctl cat rsyslog

如果有:

Requires=network.target
After=network.target

可改为:

After=network-online.target
Wants=network-online.target

四、快速排查命令(推荐)

# 看启动耗时
systemd-analyze blame | grep rsyslog

# 看详细日志
journalctl -b -u rsyslog

# 看是否卡在网络
systemctl status rsyslog

五、如果你能补充信息,我可以精准定位

你可以告诉我:

  1. Debian 版本(11 / 12?)
  2. 用的是 rsyslog 还是 syslog-ng
  3. 是否配置 远程日志
  4. 启动卡多少秒
  5. journalctl -u rsyslog 的输出

我可以直接帮你改配置。

0