所以,我说有一个事件作为多线对象进入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
变量输出。)我想单独捕获它们,并将它们存储为...什么,只要他们都在那里。
有没有办法捕获多个相同的模式并清楚地存储所有结果捕获数据,同时将整个多行事件保持在一起,以便我可以将它绑定到头数据,例如脚本开始时间?
答案 0 :(得分:0)
我认为您可以使用拆分过滤器来实现您想要的效果。它允许您将一个事件拆分为几个部分。就我记忆而言,单个部分都是原始事件的副本。您必须使用终结器参数来控制何时将消息拆分为多个部分。