logstash读取kafka数据插件

来源:互联网 发布:巨人网络股票估值多少 编辑:程序博客网 时间:2024/03/29 15:13

       最近公司做日志检索和计数日志不同维度统计,选用了ELK,我们的日志已经上传到Kafka中,Logstash需要从Kafka读取数据,下面是Logstash的简化配置:


<span style="font-size:18px;">input {  kafka {        #Kafka topic        topic_id => "test_count_log"        #消费者组         group_id => "logstash_data_access_event"        #zk的链接地址         zk_connect => "10.0.171.202:2181,10.0.171.203:2181,10.0.171.204:2181fka_msg"        queue_size => 80000        consumer_threads => 4        fetch_message_max_bytes => 10485760  }}output {  elasticsearch {        hosts => ["10.35.129.3:9200","10.35.129.4:9200","10.35.129.5:9200","10.35.129.6:9200","10.35.129.7:9200"]        workers => 4        codec => "json"        index => "kafka_test_count_log-%{+YYYY.MM.dd}"  }}</span>

       想要使用多个 logstash 端协同消费同一个 topic 的话,那么需要把两个或是多个 logstash 消费端配置成相同的 group_id 和 topic_id , 但是前提是要把 相应的 topic 分多个 partitions (区) ,多个消费者消费是无法保证消息的消费顺序性的。这里解释下,为什么要分多个 partitions(区) , kafka 的消息模型是对 topic 分区以达到分布式效果。每个 topic 下的不同的 partitions (区) 只能有一个 Owner 去消费。所以只有多个分区后才能启动多个消费者,对应不同的区去消费。其中协调消费部分是由 server 端协调而成。不必使用者考虑太多。只是 消息的消费则是无序的 。

总结:保证消息的顺序,那就用一个 partition 。 kafka 的每个 partition 只能同时被同一个 group 中的一个 consumer 消费 。


0 0