logstash kafka使用不同的编解码器输入了多个主题

时间:2019-01-09 08:10:22

标签: apache-kafka logstash

这是我的logstash conf

input {
  kafka {
    bootstrap_servers => "127.0.0.1:9092"
    topics => ["filebeat", "access"]
    group_id => "test-consumer-group"
    consumer_threads => 1
    decorate_events => true
  }
}

我有两个主题,但我想对不同的主题使用不同的编解码器。我该怎么办?

我尝试添加

    if ([topic] == "filebeat") {
      codec => "json"
    }

在kafka输入conf中,logstash返回错误。

Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"LogStash::ConfigurationError", :message=>"Expected one of #, => at line 6, column 8 (byte 143) after input {\n  kafka {\n    bootstrap_servers => \"127.0.0.1:9092\"\n    topics => [\"filebeat\", \"access\"]\n    group_id => \"test-consumer-group\"\n    if "

1 个答案:

答案 0 :(得分:1)

您可以使用每个不同的编解码器创建2个独立的kafka输入。

另一个选择是添加一个过滤器,该过滤器根据主题

来解析json对象。
filter {
  if([topic] == "filebeat") {
    json {
      source => "message"
    }
  }
}

有关更多信息,请检查: https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html