Logstash无法使用Kafka接收数据

时间:2016-07-05 11:06:50

标签: elasticsearch docker logstash apache-kafka

我使用https://hub.docker.com/r/sebp/elk/中的Docker ELK容器,根据logstash-logs,一切正常并正在运行。

现在我尝试从Kafka接收数据并使用以下配置写入ES:

input {
    kafka {
        topic_id => "collectortopic"
        zk_connect => "172.17.0.2:2181"
        type => "kafka-input"
    }
}
output {
    elasticsearch {
        hosts => ["172.17.0.4:9200"]
        codec => json
    }
    stdout {
        codec => json
    }
}

但我的设置中的任何内容似乎都是错误的,因为我无法接收任何数据。控制台中没有来自Logstash的输出,也没有Kibana中的任何数据,因为没有创建logstash索引,这应该是根据插件文档的默认行为。

我的Kafka设置很好,因为我可以与其他应用程序发送和接收数据,zk_connect也是正确的,否则我会得到例外...

有什么想法吗?

提前致谢!

P.S。:Kafka 0.9.1,Logstash 2.3.3,ES 2.3.3

4 个答案:

答案 0 :(得分:1)

您是否检查过Logstash服务器是否可以与Kafka和Elasticsearch通信?

您可以使用:

对于Elasticsearch:

curl 172.17.0.4:9200

如果您应该得到如下答案:

{
  "name" : "inf01-log-els",
  "cluster_name" : "inf01-log-els",
  "version" : {
    "number" : "2.2.1",
    "build_hash" : "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1",
    "build_timestamp" : "2016-03-09T09:38:54Z",
    "build_snapshot" : false,
    "lucene_version" : "5.4.1"
  },
  "tagline" : "You Know, for Search"
}

对于kafka,您可以查看:

telnet 172.17.0.2 2181

我有一些ELK问题。

答案 1 :(得分:0)

猜测Logstash无法解析您发送的任何内容。它是有效的JSON吗?你有没有检查日志错误?

答案 2 :(得分:0)

在我的情况下,Kafka在另一个容器中运行,我必须将KAFKA_ADVERTISED_HOST_NAME设置为IP地址而不是localhost。

感谢您的想法!

答案 3 :(得分:0)

您是否尝试过将logstash-input-kafka插件版本更新为任何内容> 3.x.x? 根据{{​​3}},插件版本3.x +支持Kafka 0.9+。 Logstash 2.x仍然默认带有插件版本2.x。