2016-12-31 3 views
0

サンプルログがあります。 "a = 1 &b = 1 &c = 1"logstashでKVについて質問する

私はKVを使用してパラメータを分離しました。

filter { 
    grok { 
    match => { "message" => "%{DATA:rawparam}} 
    } 

    KV { 
    source => "rawparam" 
    target => "param" 
    field_split = > "&?#" 
    allow_duplicate_values => false 
    } 
} 

結果は以下の通りである。しかし、私はrootの場所にparamの特定のフィールドを設定したい。

{ 
    "type" : "log", 
    "rawparam" : "a=1&b=1&c=1", 
    "param" : { 
    "a" = "1", 
    "b" = "2", 
    "c" = "3" 
    } 
} 

結果は以下のとおりです。これはLogstashで可能ですか?

{ 
    "type" : "log", 
    "rawparam" : "a=1&b=1&c=1", 
    "param" : { 
    "a" = "1", 
    "b" = "2"  
    }, 
    "c" = "3" 
} 

答えて

0

「ターゲット」を指定することで、あなたはどこのすべてのKVフィールドを配置するlogstashを言っている、彼らは「paramsは」下に終わるようにします。

[target]オプションを削除して(logstashはすべてのフィールドをルートレベルに置く)、mutate-> rename([params] [b]を[b]に移動する)、またはruby (名前を変更するために大きな一連のフィールドをループします)。