Logstash无法使用Kafka接收数据

我正在使用从https://hub.docker.com/r/sebp/elk/的Docker ELK容器,根据logstash日志一切都很好,正在运行。

现在我尝试从Kafka接收数据,并使用以下configuration写入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中的任何数据,因为没有创buildlogstash索引,根据插件文档,这应该是默认的行为。

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

有任何想法吗?

提前致谢!

PS:Kafka 0.9.1,Logstash 2.3.3,ES 2.3.3

你有没有检查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" } 

对于卡夫卡,你可以检查这个:

 telnet 172.17.0.2 2181 

我有几个ELK问题。

在猜测Logstash的是无法parsing你发送的任何东西。 它有效的JSON? 你有没有检查日志错误?

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

感谢您的想法!

你有没有尝试更新logstash-input-kafka插件版本到任何> 3.xx? 根据文档 ,Kafka 0.9+支持插件版本3.x +。 Logstash 2.x仍然默认使用插件版本2.x.