2016-04-11 14 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

ruby​​の問題は、コードの中に二重引用符があるためです。ダブルクォートを使用してコードブロック全体を囲むので、内部で使用することはできません。私はそれらをエスケープすることがうまくいくと思います。

kv {}フィルタを調べると、通常このようなフィールドを簡単に処理できます。そうでなければ、mutate-> gsubで "=>"を ":"に変換し、json {}フィルターを試してください。

関連する問題