我需要找一种方法向卡夫卡询问一系列主题。我知道我可以使用kafka-topics.sh
目录中包含的bin\
脚本来做到这一点。有了这个列表,我需要每个主题的所有消费者。我找不到该目录中的脚本,也找不到允许我这样做的kafka-consumer-api
库中的类。
背后的原因是我需要弄清楚主题偏移与消费者偏移之间的差异。
有没有办法实现这个目标?或者我是否需要在每个消费者中实现此功能?
答案 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执行此操作。
以下链接详细说明 Tutorialspoint,Zookeeper 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年了。从那以后,卡夫卡发生了许多变化。上面已经提到了这一点,但仅以小写形式提及,所以我为迟到这个问题的用户写了这篇文章。
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
顺便说一句。