温馨提示×

温馨提示×

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

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

为什么Syslog丢日志了

发布时间:2026-09-30 07:49:15 来源:亿速云 阅读:132 作者:小樊 栏目:系统运维

Syslog 丢日志是运维中很常见的问题,通常不是“Syslog 本身坏了”,而是配置、性能、网络或资源限制导致的。下面按最常见原因给你一个系统排查思路。


一、最常见原因分类

1. 接收端处理不过来(性能瓶颈)

Syslog 服务器(rsyslog / syslog-ng)在以下情况会丢:

  • 日志量突发过大
  • 磁盘 IO 慢
  • 没有队列(queue)或队列太小
  • 同步写盘(fsync)

✅ 表现:

  • imuxsock / imtcp 丢弃统计增加
  • /var/log 正常但部分日志缺失

✅ 检查:

# rsyslog
grep -i "discarded" /var/log/messages

✅ 解决:

# rsyslog 示例:开启磁盘辅助队列
$WorkDirectory /var/spool/rsyslog
$ActionQueueType LinkedList
$ActionQueueFileName fwdRule1
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on

2. UDP 本身就会丢(协议问题)

如果你用的是 UDP 514:

  • 网络拥塞 → 丢
  • 接收缓冲区满 → 丢
  • 不重传、不确认

✅ 解决建议:

  • 生产环境优先用 TCP
  • 或 RELP(可靠日志传输)
# 发送端
*.* @@logserver:514

3. 网络问题

  • 防火墙丢包
  • 中间网络设备限速
  • 跨机房 / 公网不稳定

✅ 排查:

tcpdump -i eth0 udp port 514
netstat -su | grep "packet receive errors"

4. 本地 socket 缓冲区满(/dev/log)

应用写 /dev/log 太快:

  • imuxsock 丢弃
  • Java / Docker / K8s 常见

✅ 检查:

cat /proc/sys/net/core/rmem_max

✅ 增大:

sysctl -w net.core.rmem_max=26214400

5. 日志被过滤掉了(不是真丢)

  • 规则顺序错误
  • stop / discard
  • 级别不够(err vs info)

✅ 检查:

rsyslogd -N1

6. 文件系统 / 磁盘问题

  • 磁盘满
  • inode 满
  • 日志被 logrotate 误删
df -h
df -i

7. 容器 / 云环境特有问题

  • stdout → 被 docker daemon 限流
  • sidecar 没起来
  • k8s node 日志轮转太快

二、快速定位“到底丢在哪”

位置 排查点
应用端 是否成功 write /dev/log
本机 syslog 是否收到
网络 TCP/UDP 是否通
远端 syslog 是否写入文件
存储 磁盘 / 权限

三、如果你愿意,我可以更精确帮你

你可以直接贴:

  1. 用的 rsyslog 还是 syslog-ng
  2. UDP 还是 TCP
  3. 日志量(条/秒)
  4. 报错或 discarded 信息

我可以帮你直接改配置,而不是泛泛而谈。

向AI问一下细节

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

AI
助
手