温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Syslog为何丢失部分日志

发布时间:2026-09-09 17:36:57 来源:亿速云 阅读:86 作者:小樊 栏目:系统运维

Syslog 丢失部分日志是生产环境中较常见的问题,通常不是“被删除了”,而是在采集、传输或写入的某个环节被丢弃。下面按常见原因分类说明。


一、系统/应用侧原因

1. 日志产生速度超过 syslog 处理能力

  • 突发大量日志(如故障、压测)
  • rsyslog / syslog-ng 单线程或配置不当
  • 导致 输入队列满,旧日志被丢弃

表现

  • /var/log/messages 中缺一段时间
  • 系统负载高时出现

相关配置(rsyslog)

$SystemLogRateLimitInterval 0
$SystemLogRateLimitBurst 0

module(load="imuxsock" SocketBacklog="65536")

二、速率限制(Rate Limit)

2. rsyslog 默认限流

rsyslog 默认会限制:

  • 同一进程短时间内的日志数量

默认行为

  • 每 200ms 最多 200 条
  • 超出直接丢弃

查看是否触发

journalctl -u rsyslog | grep -i ratelimit

关闭限流

$SystemLogRateLimitInterval 0
$SystemLogRateLimitBurst 0

三、网络传输丢日志(远程 syslog)

3. UDP 传输天然不可靠

  • 使用 UDP 514
  • 网络抖动、丢包直接消失

解决

  • 改用 TCP
  • 或使用 RELP(rsyslog 专用可靠协议)
*.* @@logserver:514

*.* :omrelp:logserver:2514

4. 远程服务器写入慢

  • 远端磁盘 IO 高
  • 队列未配置
  • 网络中断期间日志未缓存

建议配置本地队列

*.* @@logserver:514
$ActionQueueType LinkedList
$ActionQueueFileName syslogqueue
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on

四、文件/磁盘问题

5. 磁盘满或 inode 耗尽

df -h
df -i
  • 磁盘满 → 写不进
  • inode 满 → 无法新建文件

6. 日志轮转(logrotate)配置问题

  • 轮转时未通知 syslog
  • 导致写到已重命名的文件

正确示例

/var/log/messages {
    rotate 7
    daily
    missingok
    notifempty
    postrotate
        systemctl kill -s HUP rsyslog
    endscript
}

五、配置过滤导致“看似丢失”

7. 被规则丢弃

  • 配置了 stop
  • 或条件过滤错误

例如:

:msg, contains, "debug" stop

8. Facility / Priority 不匹配

  • 应用用 local0,但配置只收 auth
  • 实际日志没写进目标文件

六、容器 / 虚拟化环境特殊情况

9. 容器未挂载 /dev/log

  • 容器日志没进宿主 syslog
  • 只在 docker logs

解决

-v /dev/log:/dev/log

七、快速排查清单

# 是否限流
journalctl -u rsyslog | grep -i rate

# 磁盘
df -h; df -i

# 队列
ps aux | grep rsyslog

# 配置检查
rsyslogd -N1

总结一句话

Syslog 丢日志,90% 是:限流 + UDP + 无队列 + 磁盘问题

如果你能告诉我:

  • 用的 rsyslog 还是 syslog-ng
  • 是否 远程收集
  • 丢失的是 本地还是远端

我可以直接给你一份对应配置。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI