【问题标题】:Logstash Elasticsearch Output Bulk Insert Conflicts With Elasticsearch FilterLogstash Elasticsearch 输出批量插入与 Elasticsearch 过滤器冲突
【发布时间】:2017-08-23 14:09:17
【问题描述】:

我遇到了一个问题,我的日志数据和工作流程似乎与 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 过滤器查找成功?

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

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

    例如:

    .\bin\logstash.bat -f path/to/config.conf -b 1
    

    我也将它与以下标志结合起来,-w,--pipeline.workers 将其设置为 1 个工作人员,这样事件就不会乱序处理,而 -u,--pipeline.batch.delay 会增加创建批次之间的延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-19
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2015-10-29
      相关资源
      最近更新 更多