logstash 动态解析 json 以在输出中添加新字段
logstash parse dynamically json to add new fields in the output
我有以下 JSON 输入:
{
"ts": "1459504800000",
"data": "30.7",
"sid": "1"
}
使用此过滤器:
filter {
mutate {
convert => {
"data" => "float"
"ts" => "integer"
}
}
date {
match => [ "ts", "UNIX_MS"]
target => "ts_date"
}
}
我得到以下结果:
{
"ts" => 1459504800000,
"data" => 30.7,
"sid" => "1",
"@version" => "1",
"@timestamp" => "2016-04-21T14:29:54.241Z",
"type" => "redis-input",
"ts_date" => "2016-04-01T10:00:00.000Z"
}
我想在由输入的 "data"
和 "sid"
参数值(1 和 30.7)动态组成的结果中添加一个新字段。该字段应该类似于 "somestring"+"1" => 30.7
谢谢!
这就是 add_field 的用途。对于像这样与其他过滤器无关的任务,我会在 mutate:
中使用它
mutate {
add_field => { "something%{sid}" => "%{data}" }
}
此时该值将是一个字符串。如果您希望它是数字,则需要使用转换函数进行第二次变异。
我有以下 JSON 输入:
{
"ts": "1459504800000",
"data": "30.7",
"sid": "1"
}
使用此过滤器:
filter {
mutate {
convert => {
"data" => "float"
"ts" => "integer"
}
}
date {
match => [ "ts", "UNIX_MS"]
target => "ts_date"
}
}
我得到以下结果:
{
"ts" => 1459504800000,
"data" => 30.7,
"sid" => "1",
"@version" => "1",
"@timestamp" => "2016-04-21T14:29:54.241Z",
"type" => "redis-input",
"ts_date" => "2016-04-01T10:00:00.000Z"
}
我想在由输入的 "data"
和 "sid"
参数值(1 和 30.7)动态组成的结果中添加一个新字段。该字段应该类似于 "somestring"+"1" => 30.7
谢谢!
这就是 add_field 的用途。对于像这样与其他过滤器无关的任务,我会在 mutate:
中使用它mutate {
add_field => { "something%{sid}" => "%{data}" }
}
此时该值将是一个字符串。如果您希望它是数字,则需要使用转换函数进行第二次变异。