如何删除 logstash 输出中的字段
how to remove field in logstash output
我已经建立了一个 ELK 栈。对于logstash实例,它有两个输出,包括Kafka和elasticsearch。
对于elasticsearch的输出,我想保留字段@timestamp。对于Kafka的输出,我想去掉@timestamp这个字段。所以我不能只删除过滤器中的字段@timestamp。我只想为 Kafka 输出删除它。
我还没有找到这种解决方案。
附加
尝试使用克隆插件:
clone {
clones => ["kafka"]
id => ["kafka"]
remove_field => ["@timestamp"]
}
output {
if [type] != "kafka" {
elastcsearch output
}
if [type] == "kafka" {
kafka output
}
}
奇怪的是elasticsearch的输出竟然可以工作。但是不能输出到kafka。而且我试过通过id来判断,还是没有wordk。
由于您只能删除 filter
块中的字段,要使同一管道输出同一事件的两个不同版本,您需要克隆事件,删除克隆事件中的字段并使用输出中的条件。
要克隆您的活动并删除 @timestamp
字段,您需要在 filter
块中添加类似内容。
filter {
# your other filters
#
clone {
clones => ["kafka"]
}
if [type] == "kafka" {
mutate {
remove_field => ["@timestamp"]
}
}
}
这将克隆事件,克隆的事件将在字段 type
中具有值 kafka
,然后您将在输出的条件中使用该字段。
output {
if [type] != "kafka" {
your elasticsearch output
}
if [type] == "kafka" {
your kafka output
}
}
我已经建立了一个 ELK 栈。对于logstash实例,它有两个输出,包括Kafka和elasticsearch。
对于elasticsearch的输出,我想保留字段@timestamp。对于Kafka的输出,我想去掉@timestamp这个字段。所以我不能只删除过滤器中的字段@timestamp。我只想为 Kafka 输出删除它。
我还没有找到这种解决方案。
附加
尝试使用克隆插件:
clone {
clones => ["kafka"]
id => ["kafka"]
remove_field => ["@timestamp"]
}
output {
if [type] != "kafka" {
elastcsearch output
}
if [type] == "kafka" {
kafka output
}
}
奇怪的是elasticsearch的输出竟然可以工作。但是不能输出到kafka。而且我试过通过id来判断,还是没有wordk。
由于您只能删除 filter
块中的字段,要使同一管道输出同一事件的两个不同版本,您需要克隆事件,删除克隆事件中的字段并使用输出中的条件。
要克隆您的活动并删除 @timestamp
字段,您需要在 filter
块中添加类似内容。
filter {
# your other filters
#
clone {
clones => ["kafka"]
}
if [type] == "kafka" {
mutate {
remove_field => ["@timestamp"]
}
}
}
这将克隆事件,克隆的事件将在字段 type
中具有值 kafka
,然后您将在输出的条件中使用该字段。
output {
if [type] != "kafka" {
your elasticsearch output
}
if [type] == "kafka" {
your kafka output
}
}