我需要找出一种方法来询问Kafka主题列表。我知道我可以使用目录中kafka-topics.sh
包含的脚本来做到这一点bin\
。获得此列表后,每个主题都需要所有消费者。我在该目录中找不到脚本,在kafka-consumer-api
库中也找不到允许我执行此操作的类。
其背后的原因是,我需要弄清楚主题的偏移量与消费者的偏移量之间的差异。
有没有办法做到这一点?还是我需要在每个消费者中实现此功能?
Answers:
使用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
kafka-consumer-groups --topic
仅在提供时适用--reset-offsets
,因此必须有一个不同的标志才能为“特定主题的组”创建API调用
您可以将其用于0.9.0.0。版本卡夫卡
./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
我意识到这个问题现在已经有将近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 - - -
``
每个主题的所有消费者
(替换--zookeeper
为--bootstrap-server
以获取由较新的Kafka客户端存储的组)
获取所有按主题列出的消费者topic
tabconsumer
:
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
获得所需的一个:
less topic-consumer-u.txt | grep -i <TOPIC>
Kafka将所有信息存储在zookeeper中。您可以在brokers-> topics下查看所有与主题相关的信息。如果您希望以编程方式获取所有主题,则可以使用Zookeeper API。
在下面的链接中详细解释了 Tutorialspoint,Zookeeper程序员指南
高级使用者已在Zookeeper中注册,因此您可以从ZK获取列表,类似于kafka-topics.sh
获取主题列表的方式。我认为没有办法收集所有消费者。发送一些消费请求的任何应用程序实际上都是“消费者”,您无法确定它们是否已经完成。
在消费者方面,有一个JMX度量标准可以监视滞后时间。此外,还有用于滞后监控的Burrow。
我没有看到它在这里被提及,但一个命令,我经常使用,可以帮助我有一个鸟瞰的所有群体,主题,分区,偏移,滞后,消费者等
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
Group Topic 2 7 7 0 <SOME-ID> XXXX <SOME-ID>
:
:
在最重要的列是LAG
,其中一个健康的平台,理想的应该是0
(或接近0或高产量低数) -在任何时候。因此,请确保您对其进行监控!!!;-)。
PS:
有关如何监控滞后的有趣文章,请参见此处。
您也可以为此使用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
免责声明:我是这个项目的贡献者