最近工做中遇到須要使用kafka的場景,測試消費程序啓動後,要莫名的過幾十秒乃至幾分鐘才能成功獲取到到topic的partition和offset,然後開始消費數據,因而學習了一下查看kafka broker裏topic和consumer group狀態的相關命令,這裏記錄一下。python
命令參考自《Kafka: The Definitive Guide》 Chapter 9 Administrating Kafkabootstrap
如下命令中使用的zookeeper配置地址爲127.0.0.1:2181,bootstrap--server(即broker)地址爲: 127.0.0.1:9292ide
1,查看kafka topic列表,使用--list參數學習
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --list
__consumer_offsets
lx_test_topic
test
2,查看kafka特定topic的詳情,使用--topic與--describe參數測試
bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic lx_test_topic --describe Topic:lx_test_topic PartitionCount:1 ReplicationFactor:1 Configs: Topic: lx_test_topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
列出了lx_test_topic的parition數量、replica因子以及每一個partition的leader、replica信息fetch
3,查看consumer group列表,使用--list參數ui
查看consumer group列表有新、舊兩種命令,分別查看新版(信息保存在broker中)consumer列表和老版(信息保存在zookeeper中)consumer列表,於是須要區分指定bootstrap--server和zookeeper參數:spa
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9292 --list lx_test
bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --list console-consumer-86845 console-consumer-11967
4,查看特定consumer group 詳情,使用--group與--describe參數code
一樣根據新/舊版本的consumer,分別指定bootstrap-server與zookeeper參數:server
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9292 --group lx_test --describe GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG OWNER lx_test lx_test_topic 0 465 465 0 kafka-python-1.3.1_/127.0.0.1
bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group console-consumer-11967 --describe GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG OWNER Could not fetch offset from zookeeper for group console-consumer-11967 partition [lx_test_topic,0] due to missing offset data in zookeeper. console-consumer-11967 lx_test_topic 0 unknown 465 unknown console-consumer-11967_aws-lx-1513787888172-d3a91f05-0
其中依次展現group名稱、消費的topic名稱、partition id、consumer group最後一次提交的offset、最後提交的生產消息offset、消費offset與生產offset之間的差值、當前消費topic-partition的group成員id(不必定包含hostname)
上面示例中console-consumer-11967是爲了測試臨時起的一個console consumer,缺乏在zookeeper中保存的current_offset信息。