思路
每隔一段時間(比如說10秒)統計一次某topic
的所有partition
的最大offset
值之和,這便是該topic
的message總數。
然后除以間隔時間就可以粗略但方便得出 某topic
的數據增長速率(即相應程序寫kafka的速率)
Kafka常用topic操作命令匯總
中有統計最大offset命令
# 最大offset
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic test_topic --time -1
shell實現
注意:
- 第一次打印出來的speed請忽略(為了shell更加簡單方便沒有特殊處理第1次統計的情況)
- 該腳本需要放入到kafka程序安裝根目錄,或者把bin/kafka-run-class.sh文件寫成絕對路徑
#!/bin/sh
brokers="localhost:9092"
topic="test_topic"
last=0
now=0
speed=0
while :
do
echo "-------------"
last=$now
now=$(bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list ${brokers} --topic ${topic} --time -1 | awk -F ":" '{sum+=$NF} END {print sum}')
let speed=(now-last)/10
echo "now is $now, speed is $speed"
sleep 10
done