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.