簡體   English   中英

在Logstash中使用變量鍵名訪問嵌套的JSON值

[英]Accessing nested JSON Value with variable key name in Logstash

我在Logstash中有一個關於JSON的問題。 我有一個看起來像這樣的JSON輸入:

{
"2": {
        "name": "name2",
        "state": "state2"
    },

"1": {
        "name": "name1",
        "state": "state1"
    },

"0": {
        "name": "name0",
        "state": "state0"
    }
}

現在,假設我想在logstash配置中添加一個字段

json{
    source => "message"
    add_field => {
            "NAME" => "%{ What to write here ?}"
            "STATE" => "%{ What to write here ?}"
    }
}

有沒有辦法訪問JSON輸入,以便我得到一個值為name1的字段名稱,另一個名稱為2的字段和一個名稱為3的第三個字段.JSON中的第一個鍵是更改,這意味着只能有一個或更多的部分。 所以我不想像它那樣硬編碼

%{[0][name]}

謝謝你的幫助。

如果刪除輸入中的所有新行,則只需使用json過濾器即可 您不需要任何add_field操作。

沒有新行的工作配置:

filter {
        json { source => message }
}

如果無法刪除輸入中的新行,則需要將這些行與多行編解碼器合並。

使用新行進行工作配置:

input {   
    file {
        path => ["/path/to/your/file"] # I suppose your input is a file.
        start_position => "beginning"
        sincedb_path => "/dev/null" # just for testing
        codec => multiline {
            pattern => "^}"
            what => "previous"
            negate => "true"
        }
    }
}

filter {
    mutate { replace => { "message" => "%{message}}" }  }
    json { source => message }
}

我想你使用文件輸入。 如果你不這樣做,只需改變它。

輸出(兩者):

"2" => {
     "name" => "name2",
    "state" => "state2"
},
"1" => {
     "name" => "name1",
    "state" => "state1"
},
"0" => {
     "name" => "name0",
    "state" => "state0"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM