Kafka運維小貼士 | Kafka 消息監(jiān)控
點擊上方藍色字體,選擇“設為星標”

筆者經(jīng)常遇到一些無法優(yōu)化的慢查詢,面對這樣的慢查詢,筆者會將其進行預先計算存儲到mongodb或者elasticsearch中。這個業(yè)務場景需要將mysql的binlog數(shù)據(jù)發(fā)送到kafka,然后訂閱kafka并消費其中的binlog數(shù)據(jù)以實現(xiàn)實時加速查詢。但是消費binlog就可能會有很多意外發(fā)生,比如mysql數(shù)據(jù)庫發(fā)生死鎖,或者消費發(fā)生并發(fā)問題,網(wǎng)絡長時間阻塞,這些狀況都會導致kafka消費發(fā)生阻塞,一旦發(fā)生阻塞,用戶從mongodb或者elasticsearch中就會查詢不到最新的mysql數(shù)據(jù),所以筆者需要監(jiān)控kafka中消息的消費情況,監(jiān)控的方案有很多,筆者進行了整理,以便日后回顧。
kafka-consumer-groups
kafka-consumer-groups.sh是kafka自帶的工具,它位于kafka安裝目錄的bin目錄下,它不需要額外下載安裝,使用起來非常方便
通過如下命令,我們可以查看kafka的所有消費組
./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list它的輸出如下所示,可以看到其中有一個Test-Group的消費組

我們可以通過如下方式查看某個消費組的消費情況
./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group Test-Group輸出結(jié)果如下

上述涉及的幾個字段意義如下
TOPIC:主題名字
PARTITION:分區(qū)id
CURRENT-OFFSET:已經(jīng)提交的消費位移
LOG-END-OFFSET:總數(shù)據(jù)量
LAG:未消費的數(shù)據(jù)量
CONSUMER-ID:代表消費者id,為空代表當前沒有消費者
HOST:消費者主機ip,為空代表當前沒有消費者
CLIENT-ID:客戶端id,為空代表當前沒有消費者
kafka-manager
kafka-manager要比kafka-consumer-groups工具強大的多,它不僅可以用于查看消費者消費情況,同時可以管理Topic,包括創(chuàng)建topic,管理partition。
從下面地址下載kafka-manager的安裝包
http://github.com/yahoo/kafka-manager/releases
解壓并進入kafka安裝目錄,使用sbt進行編譯,sbt需要配置源,否則編譯速度非常慢
sbt clean dist將編譯好的zip格式文件復制出來,解壓縮,修改conf目錄下的application.conf文件,修改zookeeper地址參數(shù)kafka-manager.zkhosts,在bin目錄下執(zhí)行./kafka-manager命令,kafka默認端口是9000,進入管理頁面之后配置kafka節(jié)點相關(guān)信息,就能監(jiān)控kafka運行情況
如下是kafka-manager的管理界面
查看所有的消費組

Broker管理的partition列表

某個消費組消費某個topic的消費狀況


版權(quán)聲明:
文章不錯?點個【在看】吧!??




