2016-04-11 14 views
0

aşağıdaki biçimde günlük hatları var ve alanları elde etmek istiyorum ettik:Logstash filtresi - isim alanları dinamik

"field1" => "content1","field2" => "content2",field3" => "content3",... 

ben alan adlarını biliyorum, ne de alanların sayısı. Aşağıdaki gibi

Error: Expected one of #, {, } at line 8, column 51 (byte 113) after filter { ruby { code => " fieldArray = event['message'].split('"

benim conf olan

input { 
    stdin {} 
     } 

filter { 
ruby { 
    code => " 
     fieldArray = event['message'].split('", "') 
     for field in fieldArray 
      field = field.delete '",' 
      field = field.delete '"' 
      result = field.split(': ') 
      event[result[0]] = result[1] 
     end 
    " 
    } 
} 

output { 
    stdout { 
     codec => rubydebug 
     } 
} 

nasıl bu hataları düzeltmek için söyle lütfen:

Ben Ruby ile denedim ama hataları var mı?

Yardımlarınız için teşekkürler.

cevap

0

Yakut sorunu, kodunuzun içinde çift tırnak varsa. Tüm kod bloğunu çevrelemek için çift tırnak kullandığınızdan, bunları içeride kullanamazsınız. Onlardan kaçmanın işe yarayacağını düşünürdüm.

Ayrıca, bu tür alanları genellikle kolaylıkla işleyen kv {} filtresine de bakabilirsiniz. Değilse, mutate-> gsub ile "=>" değerini ":" ye dönüştürün ve json {} filtresini deneyin.