logstash elasticsearch 输出批量插入与 elasticsearch filter 冲突



我遇到了一个问题,我的日志数据和工作流程似乎与 Elasticsearch 输出批量插入的方式冲突。

我正在尝试做的是使用 Elasticsearch 过滤器插件进行查找,以便在收到结束事件时查找开始事件。但是,问题是事件通常彼此相邻或非常接近(在几行内(。当执行 Elasticsearch 过滤器查找时,它不会找到相应的开始事件,因为由于输出批量插入的方式,它尚未发送到 Elasticsearch。

作为参考,工作流如下所示:

input {
beats {
port => 5044
}
}
filter {
if [eventType] == "End" {
elasticsearch {
hosts => ["localhost:9200"]
user => "logstash-es"
password => "****"
index => "logstash-*"
query_template => "config/logstash-query.json"
fields => [["event-data", "start-event-data"]]
}
}
}
output {
elasticsearch {
hosts => "[localhost:9200]"
user => "logstash-es"
password => "****"
index => "%{[@metadata][beat]}"
document_type => "%{[@metadata][type]}"
}
}

如何强制 Elasticsearch 输出单独发送事件,以便 Elasticsearch 过滤器查找成功?

好的,我想我找到了答案。启动 Logstash 时,您可以使用以下标志 -b, --pipline.batch.size 设置批大小,该标志可以设置为 1。

前任:

.binlogstash.bat -f path/to/config.conf -b 1

我也将其与以下标志耦合,-w,--pipeline.workers将其设置为1个worker,以便事件不会无序处理,-u,--pipeline.batch.delay以增加创建批处理之间的延迟。

最新更新