从Logstash存储多个相同的结果

时间:2015-11-14 08:00:10

标签: logstash logstash-grok

所以,我说有一个事件作为多线对象进入Logstash(有许多事件基本上都符合下面的模式):

Starting script at 2015-11-12 15:06 EST
Found result a at 127.0.0.1
Found result b at 127.0.0.1
Found result c at 0.0.0.0
Script ended at 2015-11-12 15:07 EST

我如何以这样的方式匹配它,以便存储每个"发现......"分开?

我当前的配置文件类似于:

filter {
  grok {
    break_on_match => false
    match => { 
      "message" => [
        "Starting script at ${TIMESTAMP_ISO8601:run_time}",
        "Found result %{GREEDYDATA:result} at ${IP:result_ip}" 
      ]
    }
  }
}

就目前而言,这只会捕获其中一个"发现结果......"线。 (也就是说,它匹配它们全部,但只存储其中一个 - 只有一个result变量输出。)我想单独捕获它们,并将它们存储为...什么,只要他们都在那里。

有没有办法捕获多个相同的模式并清楚地存储所有结果捕获数据,同时将整个多行事件保持在一起,以便我可以将它绑定到头数据,例如脚本开始时间?

1 个答案:

答案 0 :(得分:0)

我认为您可以使用拆分过滤器来实现您想要的效果。它允许您将一个事件拆分为几个部分。就我记忆而言,单个部分都是原始事件的副本。您必须使用终结器参数来控制何时将消息拆分为多个部分。

查看以下文档:https://www.elastic.co/guide/en/logstash/current/plugins-filters-split.html#plugins-filters-split-target