Apache kafka 如何删除日志存储输出中的字段
我已经建立了一个麋鹿堆。对于logstash实例,它有两个输出,包括Kafka和elasticsearch 对于elasticsearch的输出,我想保留字段@timestamp。对于卡夫卡的输出,我想删除@timestamp字段。所以我不能只删除过滤器中的字段@timestamp。我只想在卡夫卡输出中删除它 我还没有找到这种解决办法 追加 尝试使用克隆插件:Apache kafka 如何删除日志存储输出中的字段,apache-kafka,logstash,logstash-configuration,elk,Apache Kafka,Logstash,Logstash Configuration,Elk,我已经建立了一个麋鹿堆。对于logstash实例,它有两个输出,包括Kafka和elasticsearch 对于elasticsearch的输出,我想保留字段@timestamp。对于卡夫卡的输出,我想删除@timestamp字段。所以我不能只删除过滤器中的字段@timestamp。我只想在卡夫卡输出中删除它 我还没有找到这种解决办法 追加 尝试使用克隆插件: clone { clones => ["kafka"] id => ["kafka"] remove_field
clone {
clones => ["kafka"]
id => ["kafka"]
remove_field => ["@timestamp"]
}
output {
if [type] != "kafka" {
elastcsearch output
}
if [type] == "kafka" {
kafka output
}
}
很奇怪,elasticsearch的输出可以工作。但它无法输出到卡夫卡。我已经试着通过id来判断,但仍然没有wordk。因为您只能删除
过滤器
块中的字段,要使同一管道输出同一事件的两个不同版本,您需要克隆事件,删除克隆事件中的字段,并在输出中使用条件
要克隆事件并删除@timestamp
字段,在过滤器
块中需要类似的内容
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
}
}
真奇怪。类型判断仅适用于elasticsearch输出,而不适用于kafka输出。我甚至试着设置克隆插件的id。但也不行,这是我的错。我删除导致类型无效的字段
type
。但我仍然想知道如何通过id
来判断。