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

Logstash使用Pipeline间传输时输出消息重复倍增问题求助

问题排查与解决方案

重复原因分析

你遇到的重复问题大概率是Logstash重复加载了Beats输入配置,导致同一条日志被多次接收并转发:

  • 你的pipelines.yml里已经定义了input-beats管道,包含Beats输入和转发逻辑;
  • 如果同时存在单独的beats.conf文件,且Logstash默认加载了所有.conf配置文件,就会初始化两个Beats输入实例,同一日志被接收多次后再分别转发到Elasticsearch和Slack管道,最终导致大量重复。
    另外,也可能是Logstash启动时加载了多个配置目录,或是开启自动重载后配置重复生效。

具体修复步骤

1. 清理重复的Beats输入配置

保留其中一种配置方式即可:

  • 方式一:删除单独的beats.conf,只保留pipelines.yml里的input-beats配置;
  • 方式二:修改pipelines.yml,让input-beats管道引用beats.conf,替代原有的config.string:
    - pipeline.id: input-beats
      path.config: "beats.conf"
    - pipeline.id: input-elastic
      path.config: "pwa.config"
    - pipeline.id: input-slack
      path.config: "pwa-slack.config"
    

2. 验证配置加载情况

启动Logstash时加上--config.debug参数,查看加载的配置文件列表,确认没有重复加载同一输入配置:

bin/logstash --config.debug -f pipelines.yml

3. 优化配置(可选,减少重复解析)

两个子管道都做了JSON解析,完全可以移到主管道一次性处理,节省资源:
修改beats.conf,添加JSON过滤:

input { 
    beats { 
        port => 5044
    } 
}

filter {
    json {
        skip_on_invalid_json => true
        source => "message"
        target => "stdout"
    }
}
    
output { 
    pipeline { 
        send_to => ["inputElastic","inputSlack"] 
    } 
}

然后删除pwa.config和pwa-slack.config里的json过滤块。

4. 排查其他重复触发点

查看日志的[@metadata][pipeline]字段,确认每条日志的来源管道,如果同一日志来自多个管道,说明配置加载重复。

验证修复

重启Logstash后,发送单条错误日志,检查Elasticsearch索引和Slack消息数量,确认恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:45:38