如何在logstash(5.4.0)中捕获重复模式?



如果有人能帮助我解决logstash grok问题,我将不胜感激。

给定如下日志,

IN 192.168.11.2 IN 192.168.11.3

我的目标是使用 grok 将 IP 地址放入数组中。IP 列表是动态的,可以扩展 2 个以上。

e.g
tmp = [
"192.168.11.2", "192.168.11.3"
]

但是,如果我使用如下所示的过滤器,它最终会出现在单个字段中。

filter {
grok {
match => { "message" => "(?<tmp>(IN %{IPV4}(s)?)*)" }
}
}

结果

"path" => "/tmp/sample.csv",
"@timestamp" => 2017-08-24T05:00:08.093Z,
"tmp" => "IN 192.168.11.2 IN 192.168.11.3",
"@version" => "1",
"host" => "host.ywlocal.net",
"message" => "IN 192.168.11.2 IN 192.168.11.3"

这可能吗?

您可以使用 ruby 过滤器进行更高级的解析:

filter {
ruby {
code => "event.set('ips') = event.get('message').scan(/d{1,3}.d{1,3}.d{1,3}.d{1,3}/)"
}
}

正则表达式不是 100% 正确的匹配 IP 地址,但应该适合您的需求

相关内容

  • 没有找到相关文章

最新更新