Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 如何删除日志存储输出中的字段_Apache Kafka_Logstash_Logstash Configuration_Elk - Fatal编程技术网

Apache kafka 如何删除日志存储输出中的字段

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

我已经建立了一个麋鹿堆。对于logstash实例,它有两个输出,包括Kafka和elasticsearch

对于elasticsearch的输出,我想保留字段@timestamp。对于卡夫卡的输出,我想删除@timestamp字段。所以我不能只删除过滤器中的字段@timestamp。我只想在卡夫卡输出中删除它

我还没有找到这种解决办法

追加 尝试使用克隆插件:

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
来判断。