Kafka常用排查命令
Kafka有新旧Consumer Api之分,旧的ConsumerApi提交的组信息及offset是存放在zookeeper中的,
而由于zookeeper并不适合频繁的大批量写入操作,所以在新的ConsumerApi的设计中,
新建了一个__consumer_offsets
Topic用于存放新ConsumerApi提交的组信息及offset。
所以现在有了新旧Api之分,旧的提交上来的还是存在zookeeper中。
kafka提供的工具脚本中和Consumer相碰的都有个选项--new-consumer
,
用以区分新旧Api。
# 新版
./kafka-consumer-groups.sh --list --bootstrap-server xxx:9092 --new-consumer
newgrp
# 旧版
./kafka-consumer-groups.sh --list --zookeeper xxx:2181
console-consumer-54503
console-consumer-27065
console-consumer-1686
# 新版
./kafka-consumer-groups.sh --describe --bootstrap-server xxx:9092 --new-consumer --group newgrp
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG OWNER
newgrp topicname 0 40054927 40054927 0 consumer-1_/10.28.38.222
newgrp topicname 1 43599415 43599415 0 consumer-1_/10.28.38.222
newgrp topicname 2 40092386 40092386 0 consumer-1_/10.28.38.222
newgrp topicname 3 42575063 42575063 0 consumer-1_/10.28.38.222
newgrp topicname 4 40138115 40138115 0 consumer-1_/10.28.38.222
# 旧版
./kafka-consumer-groups.sh --describe --zookeeper datacenter-test-1:2181 --group console-consumer-1686
** 旧版类似,后面只讨论新版的用法**
# 删除指定组的所有offset信息
./kafka-consumer-groups.sh --delete --bootstrap-server datacenter-test-1:9092 --new-consumer --group group1 --group group2
# 删除指定topic的所有组的offset信息
./kafka-consumer-groups.sh --delete --bootstrap-server datacenter-test-1:9092 --new-consumer --topic topicname
# 删除指定topic下指定组的offset信息
./kafka-consumer-groups.sh --delete --bootstrap-server datacenter-test-1:9092 --new-consumer --topic topicname --group group1
# 在0.10版本以后的版本,formatter使用kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter
./kafka-console-consumer.sh --bootstrap-server datecenter6:9092 --new-consumer --topic __consumer_offsets --formatter "kafka.coordinator.GroupMetadataManager\$OffsetsMessageFormatter"