大家好,我是君哥。
使用消息隊列可以幫助我們實現(xiàn)系統(tǒng)解耦、流量管控等功能。但使用過程中可能會遇到各種各樣的問題,比如系統(tǒng)資源使用率高、集群節(jié)點宕機等,進而影響我們生產(chǎn)業(yè)務(wù)正常開展。為了不讓消息隊列失控,增加監(jiān)控是非常必要的。今天來聊一聊 Kafka 有哪些重要的監(jiān)控指標。
基礎(chǔ)指標是監(jiān)控系統(tǒng)常見的監(jiān)控指標,這里介紹 4 個方面:
Kafka 分區(qū) Leader 節(jié)點收到消息后,會同步給 Follower 節(jié)點。集群健康的情況下,UnderReplicatedPartitions 值等于 0,這時同步正常的 Follower 節(jié)點數(shù)量(也就是 ISR)等于總的 Follower 節(jié)點數(shù)量。如果這個指標值大于0,比如等于 1,說明有一個 Follower 同步異常,如下圖:
圖片
這個指標表示 ISR 收縮和擴容的頻率。如果這個指標的值很高,那集群中必定有 Follower 節(jié)點頻繁地進入或退出 ISR。這個時候就需要定位有 Follower 頻繁進出 ISR 的原因。
Kafka Broker 集群中有一個節(jié)點是 Controller 節(jié)點,這個節(jié)點非常重要,負責監(jiān)聽 Partition、Topic 和 Broker 的變化,以及元數(shù)據(jù)管理。
ActiveControllerCount 指標表示當前 Broker 節(jié)點是否是 Controller 節(jié)點,集群健康的情況下,有且僅有一個 Broker 節(jié)點這個指標值是 1。如果有多個 Broker 這個指標值是 1,或者所有 Broker 指標值都是 0,就需要進行故障排查。
圖片
這個指標只有 Controller 節(jié)點有。表示處于不可用狀態(tài)的 Partition 的數(shù)量,也就是 Partition 沒有活躍的 Leader 節(jié)點的數(shù)量。健康的集群,這個值是 0,如果這個值不是 0,就得盡快排查原因,防止影響業(yè)務(wù)。
當分區(qū) Leader 節(jié)點掛了之后,就會觸發(fā)選舉新的 Leader。這個指標值表示選舉新 Leader 的頻率(每秒多少次)和集群中無 Leader 節(jié)點的時長。觸發(fā) Leader 選舉,肯定是舊的 Leader 下線,所以需要定位分析原因。
當 Broker 集群找不到分區(qū) Leader 時,需要從 ISR 集合中選出新的 Leader 節(jié)點。而如果 ISR 集合沒有節(jié)點,那就得從未同步的 Follower 中選出 Leader 節(jié)點,讓集群處于可用狀態(tài),但這個時候因為消息未同步,會有消息丟失。所以這個指標有數(shù)據(jù)時,代表可能有消息丟失。
Broker 處理一筆請求的總時間。比如處理 Producer 發(fā)送請求、Consumer 拉取請求、Follower 拉取請求。這個時間如果出現(xiàn)了比較大的波動,需要查看 Broker 的資源情況并考慮應對方案。
生產(chǎn)者也可以加一些指標來監(jiān)控發(fā)送消息的情況。
平均請求時間,這個指標包括生產(chǎn)者發(fā)送消息到收到響應的延遲,這個指標會影響 Producer 端的吞吐量。
發(fā)送緩存區(qū)中阻塞的用戶線程數(shù),如果這個指標變高,意味著生產(chǎn)者被阻塞的線程數(shù)變高,需要排查原因。
消費者在當前分區(qū)上落后于生產(chǎn)者的數(shù)量,如果這個值變大,有可能當前這個分區(qū)的消息量突增,也可能消費者消費能力下降,需要關(guān)注。
Kafka 的監(jiān)控指標非常多,關(guān)鍵指標是必須要監(jiān)控的,其他指標可以根據(jù)需要添加,同時也可以加入日志相關(guān)的監(jiān)控。希望本文能對你理解 Kafka 有所幫助。
本文鏈接:http://www.www897cc.com/showinfo-26-86342-0.html監(jiān)控 Kafka,這十個指標請考慮!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com