我有一个jdbc输入,我需要发送到两个不同的输出(http和Influxdb)。 我需要根据输出添加字段。 我希望我可以在输出阶段使用add_field,但它仅在输入和过滤阶段可用。 有人可以提出解决方案吗? Logstash 2.4
例如
input {
jdbc {
statement => "select col1, col2..."
...
}
}
filter {
}
output {
http {
#need to add/remove field here for http output
}
influxdb {
#need to add/remove field here for influxdb output
}
}
答案 0 :(得分:1)
在过滤器链的末尾附近,添加clone
类型为clones
的过滤器。 clone
过滤器会复制事件并在克隆上设置type
。之后添加if
/ else
块,添加您想要的字段。最后使用if
块围绕您的输出。
这样的事情:
filter {
clone { clones => [ "http", "influx"] }
if ([type] == "http") {
mutate {}
} else if ([type] = "influx") {
mutate {}
} else {
drop {}
}
}
output {
if ([type] == "http") {
http {}
}
if ([type] == "influx") {
influxdb {}
}
}
答案 1 :(得分:0)
多个输出会将相同的事件发送到这些输出。您可以在输入{}或过滤器{}部分添加字段,但会将其发送到两者。
如果输出是有条件的,则可以在过滤器部分中使用相同的条件来添加唯一字段。