查看kafka消息消費(fèi)情況

查看主題命令

展示topic列表

./kafka-topics.sh --list --zookeeper 172.18.153.12:2188

描述topic

./kafka-topics.sh --describe --zookeeper 172.18.153.12:2188 --topic test

查看topic某分區(qū)偏移量最大(?。┲?/h1>

./kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list 10.1.3.84:9098 --partitions 0

增加topic分區(qū)數(shù)

./kafka-topics.sh --zookeeper 172.18.153.12:2188 --alter --topic test --partitions 10

刪除topic:慎用,只會(huì)刪除zookeeper中的元數(shù)據(jù),消息文件須手動(dòng)刪除

方法一:
./kafka-topics.sh --delete --zookeeper 172.18.153.12:2188 --topic test
方法二:待驗(yàn)證
./kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper 172.18.153.12:2188 --topic test

查看topic消費(fèi)進(jìn)度,必須參數(shù)為--group, 不指定--topic,默認(rèn)為所有topic,

./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group group1

列出所有主題中的所有用戶組:

./kafka-consumer-groups.sh --bootstrap-server 10.1.3.84:9098 --list

要使用ConsumerOffsetChecker查看上一個(gè)示例中消費(fèi)者組的偏移量,我們按如下所示“describe”消費(fèi)者組:

./kafka-consumer-groups.sh --bootstrap-server 10.1.3.84:9098 --describe --group group1

-members: 此選項(xiàng)提供使用者組中所有活動(dòng)成員的列表。

./kafka-consumer-groups.sh --bootstrap-server 10.1.3.84:9098 --describe --group group1 --members

查看kafka消息消費(fèi)情況

消息堆積是消費(fèi)滯后(Lag)的一種表現(xiàn)形式,消息中間件服務(wù)端中所留存的消息與消費(fèi)掉的消息之間的差值即為消息堆積量,也稱之為消費(fèi)滯后(Lag)量。
對(duì)于Kafka而言,消息被發(fā)送至Topic中,而Topic又分成了多個(gè)分區(qū)(Partition),每一個(gè)Partition都有一個(gè)預(yù)寫式的日志文件,雖然Partition可以繼續(xù)細(xì)分為若干個(gè)段文件(Segment),但是對(duì)于上層應(yīng)用來(lái)說(shuō)可以將Partition看成最小的存儲(chǔ)單元(一個(gè)由多個(gè)Segment文件拼接的“巨型文件”)。
每個(gè)Partition都由一系列有序的、不可變的消息組成,這些消息被連續(xù)的追加到Partition中。我們來(lái)看下圖,其就是Partition的一個(gè)真實(shí)寫照:


file

上圖中有四個(gè)概念:

LogStartOffset:表示一個(gè)Partition的起始位移,初始為0,雖然消息的增加以及日志清除策略的影響,這個(gè)值會(huì)階段性的增大。
ConsumerOffset:消費(fèi)位移,表示Partition的某個(gè)消費(fèi)者消費(fèi)到的位移位置。
HighWatermark:簡(jiǎn)稱HW,代表消費(fèi)端所能“觀察”到的Partition的最高日志位移,HW大于等于ConsumerOffset的值。
LogEndOffset:簡(jiǎn)稱LEO, 代表Partition的最高日志位移,其值對(duì)消費(fèi)者不可見。

比如在ISR(In-Sync-Replicas)副本數(shù)等于3的情況下(如下圖所示),消息發(fā)送到Leader A之后會(huì)更新LEO的值,F(xiàn)ollower B和Follower C也會(huì)實(shí)時(shí)拉取Leader A中的消息來(lái)更新自己,HW就表示A、B、C三者同時(shí)達(dá)到的日志位移,也就是A、B、C三者中LEO最小的那個(gè)值。由于B、C拉取A消息之間延時(shí)問(wèn)題,所以HW必然不會(huì)一直與Leader的LEO相等,即LEO>=HW。


file

要計(jì)算Kafka中某個(gè)消費(fèi)者的滯后量很簡(jiǎn)單,首先看看其消費(fèi)了幾個(gè)Topic,然后針對(duì)每個(gè)Topic來(lái)計(jì)算其中每個(gè)Partition的Lag,每個(gè)Partition的Lag計(jì)算就顯得非常的簡(jiǎn)單了,參考下圖:


file

由圖可知消費(fèi)Lag=HW - ConsumerOffset。Kafka中自帶的kafka-consumer_groups.sh腳本中就有Lag的信息,示例如下:

[root@node2 kafka_2.12-1.0.0]# bin/kafka-consumer-groups.sh --describe --bootstrap-server localhost:9092 --group CONSUMER_GROUP_ID

TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
topic-test1 0 1648 1648 0 CLIENT_ID-e2d41f8d-dbd2-4f0e-9239-efacb55c6261 /192.168.92.1 CLIENT_ID
topic-test1 1 1648 1648 0 CLIENT_ID-e2d41f8d-dbd2-4f0e-9239-efacb55c6261 /192.168.92.1 CLIENT_ID
topic-test1 2 1648 1648 0 CLIENT_ID-e2d41f8d-dbd2-4f0e-9239-efacb55c6261 /192.168.92.1 CLIENT_ID
topic-test1 3 1648 1648 0 CLIENT_ID-e2d41f8d-dbd2-4f0e-9239-efacb55c6261 /192.168.92.1 CLIENT_ID

參考:
Kafka的Lag計(jì)算誤區(qū)及正確實(shí)現(xiàn):https://blog.csdn.net/u013256816/article/details/79955578
如何使用JMX監(jiān)控Kafka:https://blog.csdn.net/u013256816/article/details/53524884

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容