You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fluent Bit配置Syslog输出无法写入本地服务器如何解决?

Fluent Bit Syslog输出失败问题排查

核心原因

你遇到的报错是Fluent Bit无法将日志chunk发送到syslog目标,结合CPU输入测试也失败的现象,可排除Docker日志采集侧的问题,故障出在syslog输出链路,常见原因如下:

  • 本地syslog服务未开启UDP 514端口监听:绝大多数Linux发行版的rsyslog/syslog-ng服务默认关闭UDP接收模式,不会监听514 UDP端口
  • 字段映射不匹配:你在syslog输出配置中指定了syslog_hostname_key、syslog_appname_key等字段从日志的对应key取值,但CPU输入插件生成的日志、以及Docker默认发送的fluentd格式日志中没有这些自定义key,导致syslog报文组装失败
  • 端口权限或拦截规则:514属于特权端口,防火墙、iptables、SELinux规则可能拦截Fluent Bit往UDP 514端口发送的报文
  • syslog服务速率限制:默认syslog服务可能开启了入站日志速率限制,短时间内日志量过大时会直接丢弃报文

排查解决步骤

  1. 确认syslog服务开启UDP监听
    执行以下命令检查514 UDP端口是否被监听:
    ss -lunp | grep 514
    如果没有输出,修改对应syslog服务配置,以rsyslog为例:
    编辑/etc/rsyslog.conf,取消以下两行的注释:
module(load="imudp")
input(type="imudp" port="514")

保存后重启rsyslog服务生效:
systemctl restart rsyslog

  1. 验证syslog链路连通性
    用nc命令发送测试日志验证链路是否正常:
    echo "test syslog message" | nc -u 127.0.0.1 514
    查看系统日志文件(/var/log/syslog或/var/log/messages)确认是否收到测试日志,排除链路拦截问题。

  2. 修正Fluent Bit syslog配置
    先使用默认字段配置测试,避免字段缺失导致报文组装失败,可将syslog输出段修改为:

[Output]
    name                syslog
    match               *
    host                127.0.0.1
    port                514
    mode                udp
    syslog_format       rfc5424
    syslog_hostname     ${HOSTNAME}
    syslog_appname      docker-app
    syslog_message_key  log

如果需要保留字段映射逻辑,需要新增filter插件从Docker日志的原有字段中提取/重命名出需要的key,比如将Docker默认的container_name字段重命名为appname:

[FILTER]
    Name          modify
    Match         *
    Rename        container_name appname
  1. 检查安全规则
    临时关闭SELinux测试是否恢复正常:
    setenforce 0
    如果恢复正常,添加对应SELinux允许规则即可;同时确认firewalld/iptables没有拦截本地UDP 514端口。

内容的提问来源于stack exchange,提问作者Swapnil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:48:03