2017-08-24 1 views
0

J'apprécierais que quelqu'un puisse m'aider avec logstash grok.Comment capturer des motifs répétés dans logstash (5.4.0) grok?

un journal comme Étant donné ci-dessous,

IN 192.168.11.2 IN 192.168.11.3 

Mon but est de mettre l'adresse IP en utilisant tableau grok. Liste des IP est dynamique et possible d'étendre plus 2.

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

Cependant, si j'utilise un filtre comme ci-dessous il finit dans un champ unique.

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

Résultat,

 "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" 

Serait-ce possible?

Répondre

2

Vous pouvez utiliser le filtre rubis pour l'analyse plus avancée:

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

Regexp est pas 100% correct pour correspondre à l'adresse IP, mais devrait fonctionner pour vos besoins

+0

mec. C'est juste où je voulais! Je vous remercie ! –