2017-11-05 7 views
0

Ich habe Protokolle, wobei jedes Ereignis ist:Kann nicht mehrzeiligen Protokolle grok

ExitNode FF33F91CC06B6CC5C3EE804E7D8DBE42CB5707F9 
Published 2017-11-05 02:55:09 
LastStatus 2017-11-05 04:02:27 
ExitAddress 66.42.224.235 2017-11-05 04:06:26 

Ich versuchte mehrzeilige zu verwenden:

input { 
    file { 
    path => "/path/input" 
    } 
} 
filter { 
    multiline { 
    pattern => "^\b[A-Za-z]{8}\b" 
     what => "next" 
    } 
} 
filter { 
    multiline { 
    pattern => "^\b[A-Za-z]{8}\b" 
     what => "next" 
    } 
} 
filter { 
    multiline { 
    pattern => "^\b[A-Za-z]{11}\b" 
     what => "previous" 
    } 
} 
output { 
    file { 
    codec => rubydebug 
    path => "/path/output" 
    } 
} 

Und ich bekomme etwas wie folgt aus:

{ 
      "path" => "/path/input", 
    "@timestamp" => 2017-11-05T10:25:34.112Z, 
     "@version" => "1", 
      "host" => "HOST", 
     "message" => "ExitNode FE3CB742E73674F1BC2382723209ECEE44AD4AEC\nPublished 2017-11-04 20:34:55\nLastStatus 2017-11-04 21:03:26\nExitAddress 77.250.227.12 2017-11-04 21:06:45", 
      "tags" => [ 
     [0] "multiline" 
    ] 
} 

Und ich kann dieses Nachrichtenfeld nicht finden, weil ich nicht weiß, wie man \n entfernt und ersetzt, und gsub => ["message", "\n", "Line_Break"] funktioniert nicht Stütze wirklich. Dank

+0

Ich habe dies funktioniert: 'mutiert {\t gsub => [ "message", "[\ r \ n]", "_"] } ' – baudsp

+0

Vielen Dank! –

Antwort

0

Aus dem Kommentar von @baudsp:

mutate { 
    gsub => 
    ["message", "[\r\n]","_"] 
}