gpt4 book ai didi

elasticsearch - Logstash重复事件

转载 作者:行者123 更新时间:2023-12-03 02:25:41 25 4
gpt4 key购买 nike

我有两个Logstash配置文件:test1.conftest2.conf
他们每个人都有自己的input -> filter -> ouput流程。

它们都具有相同的过滤器和elasticsearch输出,并写入相同的索引。

我的问题是,无论我选择测试哪个输入,Logstash都将重复事件写入ElasticSearch索引(每个事件变成两个相同的事件,而不是一个)。

我怎样才能解决这个问题?

最佳答案

默认情况下,Logstash具有一个名为main的管道,该管道可自动检测conf.d文件夹中的所有.conf文件。此配置在pipelines.yml文件中设置:

- pipeline.id: main
path.config: "/etc/logstash/conf.d/*.conf"

如果在一个管道下有多个.conf文件,Logstash会将它们合并在一起,从而对所有输入执行所有过滤器和输出,因此在这种情况下,无论哪个输入正在接收事件,它都会通过两个路径过滤器/输出,导致重复写入ElasticSearch(如果两个.conf文件的过滤器/输出相同,则事件相同)。

解决方案

1.将过滤器/输出移动到单独的文件

如果您的过滤器/输出在配置文件中相同,请将过滤器/输出移到单独的文件中。因此,现在您有两个.conf文件,每个输入一个,而另一个过滤器/输出的.conf文件。使用此设置,每个输入将仅通过一个处理路径。

例如:

input1.conf
input {
# input 1
}

input2.conf
input {
# input 2
}

filter_output.conf
filter {
# common filter
}

output {
# common output
}

选择该解决方案时,您可以查看此 answer作为另一个示例。

请注意,如果过滤器/输出相同,但您仍希望将它们称为完全不同的处理路径,请继续阅读。

2.将.conf文件拆分到不同的管道

如果需要每个.conf文件都独立,请将.conf文件拆分到不同的管道中。

为此,只需编辑 pipelines.yml文件。
例如:

pipelines.yml
- pipeline.id: test1
path.config: "/etc/logstash/conf.d/test1.conf"

- pipeline.id: test2
path.config: "/etc/logstash/conf.d/test2.conf"

阅读有关 Multiple Pipelines的更多信息

3.按类型分开
用不同的类型标记每个输入,稍后使用if语句在过滤器/输出上进行检查。

您可以在 answer中阅读有关它的更多信息。

关于elasticsearch - Logstash重复事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61119690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com