我使用基本的Kafka-Logstash设置来与后端同步许多不同的应用程序。我对这是如何工作有一个非常基本的了解。目前我正在研究分析Kafka处理的数据。我想使用Kafka Connect来获取Kibana板上的所有东西,我不确定如何解决这个问题。
我发现this resource说如下:
虽然Kafka Connect是Apache Kafka本身的一部分,但如果您想将数据从Kafka流式传输到Elasticsearch,您将需要Confluent Platform。
我的问题是:
1.我是否必须使用Confluent来实现这一目标?
2.我应该使用Confluent实现这一目标吗?
我也研究了其他工具,例如Prometheus,但据我所知,实现类似Kibana的可视化并不容易。但如果我错了,请教育我!
我使用了Logstash(通过tcp输入插件使用JSON数据)和Confluent使用Kafka Connect Elastic连接器(使用Avro数据),两者都使用常规的Apache Kafka。所以,答案是你,不。配置Kafka Connect只需要更多时间,因为你必须构建源代码,所以你应该确定,因为它在一天结束时仍然是相同的Apache Kafka。
两者都适用于Kibana,但这当然在很大程度上取决于您如何管理Elasticsearch中的索引模式以及您正在摄取的数据。
就个人而言,如果你对设置Elasticsearch指标和类型映射一无所知我发现Logstash更简单,因为Logstash的Elasticsearch输出插件“正常工作”。我不记得我是否使用了Kafka输入插件,但我认为它的工作方式与其他任何输入类似,但如果您的生产者有一些非标准序列化,Kafka反序列化器可能会出现问题(例如,人们将Protobuf数据放入Kafka)
我看到Prometheus / Grafana更多的是指标,而不是可视化。
您可以使用Logstash Kafka输入插件可视化和分析kafka数据。以下是Logstash代码段配置示例。
input {
kafka {
bootstrap_servers => "localhost:9092"
client_id => "client_id_name" // optional
topics => ["topic_name"]
}
}
//Logstash provides different filters like json,csv and etc..You can add filters based on your requirements.
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
elasticsearch{
hosts => ["http://localhost:9200/"]
index => "index_name"
document_type => "document_type_name" // optional
}
}
有关更多kafka输入配置选项,请参阅https://www.elastic.co/guide/en/logstash/current/plugins-inputs-kafka.html