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

如何在logstash(5.4.0)grok中捕获重复模式?,logstash,logstash-grok,Logstash,Logstash Grok,如果有人能帮我解决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" => "(?<t

如果有人能帮我解决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)?)*)" }
  }
}

这可能吗?

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

filter {
    ruby {
        code => "event.set('ips') = event.get('message').scan(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/)"
    }
}
Regexp与ip地址的匹配不是100%正确,但应该可以满足您的需要

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