2017-08-24 58 views
0

如果有人可以帮我用logstash grok,我将不胜感激。如何在logstash(5.4.0)grok中捕获重复模式?

给出一个日志像下面,

IN 192.168.11.2 IN 192.168.11.3 

我的目标是把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" 

这将是可能的吗?

回答

2

可以使用红宝石滤波更先进的分析:

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

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

+0

多德工作。这是我想要的地方!谢谢 ! –