kafka 官方對于自身的 lag 監控并沒有太好的方法,雖然kafka broker 自帶有 kafka-topic.sh, kafka-consumer-groups.sh, kafka-console-consumer.sh 等腳本,但是對于大規模的生産叢集上,使用腳本采集是非常不可靠的。
linkedin 公司的資料基礎設施streaming sre團隊正在積極開發burrow,該軟體由go語言編寫,在apache許可證下釋出,并托管在 github burrow 上。
它收集叢集消費者群組的資訊,并為每個群組計算出一個單獨的狀态,告訴我們群組是否運作正常,是否落後,速度是否變慢或者是否已經停止工作,以此來完成對消費者狀态的監控。它不需要通過監控群組的進度來獲得門檻值,不過使用者仍然可以從中獲得消息的延時數量。
burrow自動監控所有消費者和他們消費的每個分區。它通過消費特殊的内部kafka主題來消費者偏移量。然後,burrow将消費者資訊作為與任何單個消費者分開的集中式服務提供。消費者狀态通過評估滑動視窗中的消費者行為來确定。
這些資訊被分解成每個分區的狀态,然後轉化為consumer的單一狀态。消費狀态可以是ok,或處于warning狀态(consumer正在工作但消息消費落後),或處于error狀态(consumer已停止消費或離線)。此狀态可通過簡單的http請求發送至burrow擷取狀态,也可以通過burrow 定期檢查并使用通知其通過電子郵件或單獨的http endpoint接口(例如監視或通知系統)發送出去。
burrow能夠監控consumer消費消息的延遲,進而監控應用的健康狀況,并且可以同時監控多個kafka叢集。用于擷取關于kafka叢集和消費者的資訊的http上報服務與滞後狀态分開,對于在無法運作java kafka用戶端時有助于管理kafka叢集的應用程式非常有用。
burrow 是基于 go 語言開發,目前 burrow 的 v1.1 版本已經release。
burrow 也提供用于 docker 鏡像。
burrow_1.2.2_checksums.txt 297 bytes
burrow_1.2.2_darwin_amd64.tar.gz 4.25 mb
burrow_1.1.0_linux_amd64.tar.gz 3.22 mb (centos 6)
burrow_1.2.2_linux_amd64.tar.gz 4.31 mb (centos 7 require glibc >= 2.14)
burrow_1.2.2_windows_amd64.tar.gz 4 mb
source code (zip)
source code (tar.gz)
本發行版包含針對初始1.0.0發行版中發現的問題的一些重要修複,其中包括:
支援 kafka 1.0更新版本(#306)
fix zookeeper 監視處理(#328)
還有一些小的功能更新
存儲最近的代理偏移環以避免停止的分區出現虛假警報
添加可配置的通知間隔
通過環境變量添加對配置的支援
支援存儲子產品中可配置的隊列深度
安裝方法可以選用源碼編譯,和使用官方提供的二進制包等方法。
這裡推薦使用二進制包的方式。
burrow 是無本地狀态存儲的,cpu密集型,網絡io密集型應用。
預設配置檔案為 burrow.toml
burrow 傳回額接口均為 json 對象格式,是以非常友善用于二次采集處理。
消費組健康狀态的接口含義如下: