2017-10-20 11 views
0

私はlogstashを使用しています。私はログにRubyハッシュを持っています。ログのようになります。logstashで動的ルビーハッシュを解析する

id: 20171023080217469299836 time: 2017-10-23 08:02:17 +0500 login: 123 params: {:service_id=>21164, :user_id=>"771713"} 
id: 20171022185107064615881 time: 2017-10-22 18:51:07 +0500 login: 321 params: {:unc=>"521130929", :id=>"107005094"} 

そして、私は様々な

id: 20171023080217469299836 time: 2017-10-23 08:02:17 +0500 login: 123 params: {:service_id=>21164, :user_id=>"771713"}       
    {                                    
     "@timestamp" => 2017-10-23T03:02:17.000Z,                         
     "@version" => "1",                               
      "host" => "elk",                             
       "id" => "20171023080217469299836",                         
      "login" => "123",                              
      "params" => "{:service_id=>21164, :user_id=>\"771713\"}",                                                      
    }                                    
    id: 20171022185107064615881 time: 2017-10-22 18:51:07 +0500 login: 321 params: {:unc=>"521130929", :id=>"107005094"}        
    {                                    
     "@timestamp" => 2017-10-22T13:51:07.000Z,  
     "@version" => "1",                               
      "host" => "elk",                             
       "id" => "20171022185107064615881",                         
      "login" => "321",                              
      "params" => "{:unc=>\"521130929\", :id=>\"107005094\"}",                                                       
    }                                    

パラメータ名を "paramsは" フィールドにそれを解析。追加または削除することもできます(ハッシュでは2または4-5のパラメータが時々あります)。私は(XMLフィルタは、解析するように)異なるフィールドに

{ 
"parse.service_id" : 21164, 
"parse.user_id" : 771713 
} 

{ 
"parse.unc" : 521130929 
"parse.id" : 107005094 
} 

をこれを解析したいのですがしかし、これを行う方法を見つけることができません。 Logstashルビパーサーはありますか?

+1

は、あなたがソースデータがどのように見えるかのより良い例を示し、ことができるもの、あなたがそれのように見てみたい:

これはあなたに以下の可視化を与えるのだろうか?確かに、あなたは単にキーを ''解析する ''だけではない。 + key' ... – henrebotha

+0

私は正確に鍵を解析する必要があります。 +キー – Dees7

+0

'my_data.map {| key、value | ["#{key}"、value]} .to_h'を解析する – henrebotha

答えて

0

kvフィルタとgrokフィルタを一緒に使用できます。あなたのfilter.confのlogtashファイルで

、次の行を追加します。

grok { 
    match => { "message" => "id: %{INT:id} time: %{GREEDYDATA:time} login: %{INT:login} params: %{GREEDYDATA:params}" } 
} 
date { 
    match => ["time", "yyyy-MM-dd HH:mm:ss Z"] 
    } 
kv { 
    source => "params" 
    remove_char_key => ":" 
    remove_char_value => "\"" 
    field_split => "," 
    value_split => "=" 
    trim_key => "\{" 
    trim_value => "\}>\"" 
    prefix => "parse." 

} 

PS:あなたが\を使用して"{などの特殊な正規表現文字をエスケープする必要があります。

Kibana Visualization

関連する問題