可视化和分析来自Kafka的数据

时间:2019-03-08 13:48:10

标签: elasticsearch apache-kafka logstash kibana confluent

我正在使用基本的Kafka-Logstash设置将许多不同的应用程序与后端同步。我对此有一个非常基本的了解。目前,我正在研究分析Kafka处理的数据。我想用Kafka Connect将所有东西都放在Kibana板上,我不确定如何解决这个问题。

我发现this resource内容如下:

  

虽然Kafka Connect是Apache Kafka本身的一部分,但是如果您想将数据从Kafka流式传输到Elasticsearch,则需要Confluent平台。

我的问题是:

1。我必须使用Confluent来实现吗?

2。我应该使用Confluent来实现吗?

我也研究了其他工具,例如Prometheus,但据我所知,要实现类似Kibana的可视化并不容易。但是,如果我错了,请教育我!

2 个答案:

答案 0 :(得分:1)

我同时使用了Logstash(带有通过tcp输入插件的JSON数据)和Co​​nfluent的Kafka Connect弹性连接器(带有Avro数据),两者均与常规Apache Kafka一起使用。因此,的答案不行。配置Kafka Connect只会花费更多时间,因为您必须构建源代码,因此可以肯定,因为最终还是一样的Apache Kafka。

两者都可以与Kibana一起使用,但是这当然取决于您在Elasticsearch中如何管理索引模式以及要摄取的数据。

如果您对设置Elasticsearch索引和类型映射一无所知,我个人认为Logstash会更简单,因为Logstash的Elasticsearch输出插件“正常工作”。我不记得我是否使用过Kafka输入插件,但是我想它可以与任何其他输入相似地工作,但是如果您的生产者有一些非标准的序列化,Kafka反序列化器可能会出现问题。人们将Protobuf数据放入Kafka)

我更多地看到Prometheus / Grafana的指标,而不是可视化。

答案 1 :(得分:1)

您可以使用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