2016-12-31 69 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 
    } 
} 

結果如下。但是,我想將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

通過指定'target',你告訴logstash把所有的kv字段放在哪裏,所以他們最終在'params'下。你可以刪除'target'選項(並且logstash會把所有的字段放在根目錄下),使用mutate-> rename(移動[params] [b]到[b]),或者使用ruby (循環跨越更大的一組字段進行重命名)。