卡夫卡消费者名单

时间:2015-09-21 14:38:10

标签: apache-kafka kafka-consumer-api

我需要找一种方法向卡夫卡询问一系列主题。我知道我可以使用kafka-topics.sh目录中包含的bin\脚本来做到这一点。有了这个列表,我需要每个主题的所有消费者。我找不到该目录中的脚本,也找不到允许我这样做的kafka-consumer-api库中的类。

背后的原因是我需要弄清楚主题偏移与消费者偏移之间的差异。

有没有办法实现这个目标?或者我是否需要在每个消费者中实现此功能?

8 个答案:

答案 0 :(得分:53)

使用kafka-consumer-groups.sh

例如

bin/kafka-consumer-groups.sh  --list --bootstrap-server localhost:9092

bin/kafka-consumer-groups.sh --describe --group mygroup --bootstrap-server localhost:9092

答案 1 :(得分:12)

您可以将此用于0.9.0.0。版本kafka

./kafka-consumer-groups.sh --list --zookeeper hostname:potnumber

查看您创建的群组。这将显示所有使用者组名称。

 ./kafka-consumer-groups.sh --describe --zookeeper hostname:potnumber  --describe  --group consumer_group_name

查看详情

GROUP, TOPIC, PARTITION, CURRENT OFFSET, LOG END OFFSET, LAG, OWNER

答案 2 :(得分:3)

Kafka将所有信息存储在zookeeper中。您可以在代理 - >主题下查看所有与主题相关的信息。如果您希望以编程方式获取所有主题,可以使用Zookeeper API执行此操作。

以下链接详细说明 TutorialspointZookeeper Programmer guide

答案 3 :(得分:2)

高级别消费者已注册到Zookeeper中,因此您可以从ZK获取列表,类似于kafka-topics.sh获取主题列表的方式。我认为没有办法收集所有消费者;发送一些消费请求的任何应用程序实际上都是消费者",你无法判断它们是否已经完成。

在消费者方面,有一个JMX metric exposed to monitor the lag。此外,滞后监控还有Burrow

答案 4 :(得分:2)

每个主题的所有使用者

(用adr = A + (j-1)*4替换--zookeeper,以获取由较新的Kafka客户端存储的组)

按表的--bootstrap-server 标签 topic的形式获取每个主题的所有消费者:

consumer

使此对独特:

for t in `kafka-consumer-groups.sh --zookeeper <HOST>:2181 --list 2>/dev/null`; do
    echo $t | xargs -I {} sh -c "kafka-consumer-groups.sh --zookeeper <HOST>:2181 --describe --group {} 2>/dev/null | grep ^{} | awk '{print \$2\"\t\"\$1}' "
done > topic-consumer.txt

得到想要的一个:

cat topic-consumer.txt | sort -u > topic-consumer-u.txt

答案 5 :(得分:1)

我意识到这个问题现在已经有4年了。从那以后,卡夫卡发生了许多变化。上面已经提到了这一点,但仅以小写形式提及,所以我为迟到这个问题的用户写了这篇文章。

  1. 默认情况下,偏移量现在存储在Kafka主题中(不再存储在Zookeeper中),请参见Offsets stored in Zookeeper or Kafka?
  2. 有一个kafka-consumer-groups实用程序,它返回所有信息,包括主题和分区的偏移量,使用者的消费量,甚至是滞后时间(注:当您询问主题的偏移量时,我认为您的意思是主题分区的偏移量)。在我的Kafka 2.0测试群集中:
kafka-consumer-groups --bootstrap-server kafka:9092 --describe
    --group console-consumer-69763 Consumer group 'console-consumer-69763' has no active members.

TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
pytest          0          5               6               1               -               -               -
``


答案 6 :(得分:1)

您也可以使用kafkactl

# get all consumer groups (output as yaml)
kafkactl get consumer-groups -o yaml

# get only consumer groups assigned to a single topic (output as table)
kafkactl get consumer-groups --topic topic-a

样本输出(例如,yaml)

name: my-group
protocoltype: consumer
topics:
 - topic-a
 - topic-b
 - topic-c

免责声明:我是这个项目的贡献者

答案 7 :(得分:0)

我在这里没有看到它,但是我经常使用的一个命令可以帮助我对所有组,主题,分区,偏移量,滞后,消费者等事物有一个鸟瞰图

kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --all-groups

示例如下:

GROUP TOPIC PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG CONSUMER-ID HOST CLIENT-ID
GNAME TNAME 2          7               7               0   SOME-ID     XXXX SOME-ID
...
...

我正在使用kafka_2.12-2.3.0顺便说一句。