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

Fluentd向AWS Kinesis Firehose发送数据时偶发丢失该如何排查解决?

Fluentd 投递 AWS Kinesis Firehose 少量日志丢失解决方案

问题根因排查方向

  • 排查服务日志报错:你当前配置的全局日志级别为info,kinesis_firehose 插件的限流、权限、参数错误都会输出到日志中,常见报错包括Firehose流超限触发的ProvisionedThroughputExceededException、单条日志超过1MiB的大小限制、实例角色临时凭证拉取失败。
  • 校验单条日志规格:AWS Kinesis Firehose 单条记录最大支持1MiB,若存在超过该大小的日志,会被服务端直接拒绝,且不会触发整个chunk的重试,极易被忽略。
  • 检查pos_file写入逻辑:你配置的pos_file压缩间隔为72h,若Fluentd进程异常退出,未同步到pos_file的偏移量会导致部分日志漏读,最终表现为数据丢失。

配置优化方案

你可以直接替换原有配置,以下是优化后的完整配置:

<system>
      log_level info
  </system>
  <source>
      @type tail
      path "/var/log/app/tracy.log*"
      pos_file "/var/tmp/tracy.log.pos"
      pos_file_compaction_interval 72h
      @log_level "error"
      tag "tracylog"
      <parse>
            @type "json"
            time_key False
      </parse>
  </source>
  <source>
     @type monitor_agent
     bind 127.0.0.1
     port 24220
  </source>
  <match tracylog>
      @type "kinesis_firehose"
      region "${awsRegion}"
      delivery_stream_name "${delivery_stream_name}"
      # 新增重试配置,覆盖默认重试逻辑
      retries 15
      retry_max_interval 60s
      retry_all_errors true
      <instance_profile_credentials>
      </instance_profile_credentials>
      <buffer>
          # 替换内存buffer为文件buffer,进程重启不丢缓冲数据
          @type file
          path /var/tmp/fluentd/firehose_buffer
          flush_interval 30s
          flush_thread_count 4
          chunk_limit_size 1m
          # buffer满时阻塞输入,不丢弃数据
          overflow_action block
      </buffer>
      # 新增死信队列,多次重试失败的日志写入本地,后续可手动重传
      <secondary>
          @type file
          path /var/log/fluentd/firehose_failed_records
          <buffer>
              flush_interval 60s
          </buffer>
      </secondary>
  </match>

核心优化点说明

  • 内存buffer改为文件持久化buffer:原配置默认使用内存buffer,Fluentd进程异常退出时,缓冲区内所有未投递的日志会直接丢失,改为文件buffer后数据会落盘持久化,进程重启后会自动重试投递。
  • 全异常重试配置:开启retry_all_errors后所有投递异常都会触发重试,适配限流、网络波动等偶发故障场景,大幅降低偶发丢数据的概率。
  • 死信队列兜底:多次重试仍投递失败的日志会写入本地指定路径,不会直接丢弃,后续可根据本地日志排查失败原因并重传。
  • buffer满时阻塞输入:避免流量突增时buffer溢出直接丢弃数据,配合下游Firehose的流规格扩容适配峰值流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:30:01