2016-04-11 80 views
0

我有下面的格式的日誌線和要提取的字段:Logstash過濾器 - 名字段動態

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

我不知道,字段名稱,也不字段的數量。

我用紅寶石嘗試過,但得到的錯誤:

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

我的conf如下所示,

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

請告訴我如何解決這些錯誤?

感謝您的幫助。

回答

0

紅寶石問題是因爲你的代碼中有雙引號。由於您使用雙引號來包圍整個代碼塊,因此您不能在裏面使用它們。我會想象逃脫他們會工作。

您也可以查看kv {}篩選器,該篩選器通常可輕鬆處理這些字段。如果不是,請使用mutate-> gsub將「=>」轉換爲「:」,然後嘗試使用json {}過濾器。