2014-06-19 28 views
18

Benim günlükleri böyle biçimlendirilir:Logstash grok satırlı mesaj

2014-06-19 02:26:05,556 INFO ok 
2014-06-19 02:27:05,556 ERROR 
message:space exception 
     at line 85 
solution:increase space 
      remove files 

olayların 2 tipi vardır:

-log gibi birden hattında ilk

-log gibi tek satırda ikincisi

Bir satır olayını işleyebiliyorum, ancak iletiyi bir değişkende ve başka bir çözümde depolamak istediğim ikinci tür işleyemiyorum. . Yani bu benim yaptığım budur

input { 
file { 
    path => ["logs/*"] 
    start_position => "beginning" 
    codec => multiline { 
        pattern => "^%{TIMESTAMP_ISO8601} " 
        negate => true 
        what => previous 
    }  
} 
} 
filter { 
#parsing of one line event 
grok { 
patterns_dir => "./patterns" 
match=>["message","%{TIMESTAMP_ISO8601:timestamp} %{WORD:level} ok"] 
} 
#the parsing fail, so we assumed we are in multiline events, now I process them and I am stuck when I am getting to the new line. 
if "_grokparsefailure" in [tags] { 
grok { 
patterns_dir => "./patterns" 
match=>["message","%{TIMESTAMP_ISO8601:timestamp} %{WORD:level}\r\n"] 
} 
} 

} 

ve ben şu benim konsol çıkışı istiyorum:

Bu

benim yapılandırma olduğunu ben istiyorum,

{ 
"@timestamp" => "2014-06-19 00:00:00,000" 
"path" => "logs/test.log" 
"level"=>"INFO" 
}, 
{ 
"@timestamp" => "2014-06-19 00:00:00,000" 
"path" => "logs/test.log" 
"level"=>"ERROR" 
"message" => "space exception at line 85" 
"solution"=>"increase space remove files" 
} 

Somut İki ifade arasındaki tüm ifadeleri ("ileti" ve "ileti" için "çözüm", "çözüm" ve çözüm değişkeni için olayın sonu), ve ifadenin bir veya daha fazla satırda olmasının önemi yoktur.

filter 
{ 
    multiline 
    { 
     pattern => "^ " 
     what => "previous" 
    } 
} 

Bu boşluk ile başlayan tüm çizgi birleştirecek: Sen doğru multilines birleştirmek gerekir

: İki sorunlar var gibi önceden

Teşekkür

+2

sadece 'mesaj denediniz: (?. *) çözüm :( *)'?.? Bilmiyorum grok içinde newline ile eşleşir veya değil - eğer '' yerine [. \ r \ n] * 'koyamazsanız. *' – Alcanzar

cevap