gpt4 book ai didi

json - 在 Logstash 中使用可变键名访问嵌套的 JSON 值

转载 作者:行者123 更新时间:2023-12-02 01:33:08 28 4
gpt4 key购买 nike

我有一个关于 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 的字段 Name,另一个字段的名称为 2,第三个字段的名称为 3。JSON 中的第一个键正在改变,这意味着只能是一个或多个部分。所以我不想像

这样硬编码
%{[0][name]}

感谢您的帮助。

最佳答案

如果您删除输入中的所有新行,您可以简单地使用 json filter .您不需要任何 add_field 操作。

没有换行的工作配置:

filter {
json { source => message }
}

如果您无法删除输入中的新行,则需要将这些行与 multiline codec 合并.

使用新行配置:

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"
}

关于json - 在 Logstash 中使用可变键名访问嵌套的 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32962876/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com