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

Filebeat TCP输入是否支持ack应答以适配AWS日志传输要求?

Filebeat TCP输入的ACK应答机制说明

Filebeat原生的socket输入(type: tcp配置项)默认没有内置应用层自定义ACK返回能力,仅完成TCP传输层的报文确认,不会返回业务侧约定的ACK标识,无法直接满足AWS侧的应答要求,可通过以下三种方案实现需求:

  • 方案1:通过script处理器自定义ACK逻辑
    可在Filebeat事件成功写入内部队列后,通过内置的script处理器主动向来源socket连接写入约定的ACK标识,配置示例如下:
    # 输入段配置
    filebeat.inputs:
    - type: tcp
      host: "0.0.0.0:9000"
      line_delimiter: "\n"
      fields:
        source_conn: "%{[source.address]}"
    
    # 处理器段配置
    processors:
      - script:
          lang: javascript
          source: >
            function process(event) {
              var conn = event.Get("fields.source_conn");
              // 写入业务约定的ACK标识
              conn.Write("ACK\n");
              return event;
            }
    
    该方案的ACK触发时机为事件进入Filebeat内部队列的时间点,适用于接受写入内存队列即确认接收的场景。
  • 方案2:应答逻辑迁移到Logstash层实现
    如果你的链路包含Logstash组件,更稳妥的方式是将ACK逻辑放到Logstash侧:Logstash的TCP输入原生支持ack配置项,开启后可在事件成功写入下游输出队列后自动返回约定的ACK。你可以选择让AWS直接将日志发送到Logstash的TCP端口,也可以在Filebeat成功转发事件到Logstash后,由Logstash触发回调向AWS返回ACK。
  • 方案3:轻量TCP代理中转
    如果上述两种方案不符合部署要求,可以自行开发几十行代码的轻量TCP代理,部署在AWS和Filebeat之间:代理接收AWS的日志后转发给Filebeat,监听Filebeat的registry文件确认事件已被持久化处理后,再向AWS返回约定的ACK标识。

注意:方案1需要Filebeat版本≥7.10,低版本script处理器不支持socket连接写入操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:09:04