監控Kafka的關鍵指標

Kafka 架構

?上面綠色部分 PRODUCER(生產者)和下面紫色部分 CONSUMER(消費者)是業務程序,通常由研發人員埋點解決監控問題,如果是 Java 客戶端也會暴露 JMX 指標。組件運維監控層面著重關注藍色部分的 BROKER(Kafka 節點)和紅色部分的 ZOOKEEPER。

ZooKeeper 也是 Java 語言寫的,監控相對簡單,另外 ZooKeeper 支持 mntr 四字命令,可以獲取 ZooKeeper 內部健康狀況。新版 ZooKeeper 連四字命令都不需要了,直接內置暴露了 Prometheus 協議的 metrics 接口,直接抓取即可。

重點關注 Broker 節點的監控,也就是 Kafka 自身的監控,通常從四個方面著手。

  • Kafka 進程所在機器的監控,重點關注 CPU、硬盤 I/O、網絡 I/O。
  • JVM 監控,Kafka 是個 Java 進程,所以需要常規的 JVM 監控,通過 JMX 方式暴露。
  • Kafka 自身的指標、也是通過 JMX 方式暴露,比如消息數量、流量、分區、副本的數量等。
  • 各個 consumer 的 lag 監控,即消息堆積量,是各類 MQ 都應該監控的指標。

JMX(Java Management Extensions)是一個為應用程序植入管理功能的框架。Java 程序接入 JMX 框架之后,可以把一些類的屬性和方法暴露出來,用戶就可以使用 JMX 相關工具來讀取或操作這些類。

Kafka 的配置文件在 config 目錄,各種腳本在 bin 目錄,要讓 Kafka 開啟 JMX,肯定是要修改某個配置項或者調整某個腳本的,具體調整哪里呢?我們在 Kafka 的部署目錄搜索一下看看。

grep -i jmx -r config
grep -i jmx -r bin

JMX 數據分兩類,一類是和 JVM 相關的,一類是和 Kafka 相關的。

ThreadCount 表示 JVM 里的線程數,類似的還有 DaemonThreadCount,表示后臺線程數,PeakThreadCount 表示歷史峰值線程數。JVM 要重點關注 GC 的情況和內存的情況。

GC 主要看次數和時間,分為 YongGC 和 FullGC,YongGC 很正常,頻率也比較高,FullGC 正常情況下很少發生,如果經常發生,FullGC 程序的性能就會受影響。GC 次數的指標是 kafka_java_garbage_collector_CollectionCount,是一個 Counter 類型單調遞增的值。GC 時間的指標是 kafka_java_garbage_collector_CollectionTime,也是一個 Counter 類型單調遞增的值。

內存的指標是 kafka_java_memory_pool_Usage_used,單位是 byte。有個 name 標簽標識了具體是哪個區域的內存大小,比如 Eden 區、Survivor 區、Old 區。

Kafka 指標

  • 活躍控制器數量:MBean:broker kafka.controller:type=KafkaController,name=ActiveControllerCount。一個 Kafka 集群有多個 Broker,正常來講其中一個 Broker 會是活躍控制器,且只能有一個。從整個集群角度來看,SUM 所有 Broker 的這個指標,結果應該為 1。如果
  • 非同步分區數量:MBean:kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions。這個指標是對每個 Topic 的每個分區的統計,如果某個分區主從同步出現問題,對應的數值就會大于 0。
  • 離線分區數量:MBean:kafka.controller:type=KafkaController,name=OfflinePartitionsCount。這個指標只有集群控制器才有,其他 Broker 這個指標的值是 0,表示集群里沒有 leader 的分區數量。
  • 離線日志目錄數量:MBean:kafka.log:type=LogManager,name=OfflineLogDirectoryCount。Kafka 是把收到的消息存入 log 目錄,如果 log 目錄有問題,比如寫滿了,就會被置為 Offline,及時監控離線日志目錄的數量顯然非常有必要。
  • 流入流出字節和流入消息:這是典型的吞吐指標,既有 Broker 粒度的,也有 Topic 粒度的,名字都一樣,Topic 粒度的指標數據 MBean ObjectName 會多一個 topic=xx 的后綴。
  • 流入字節:MBean:kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec。這個指標 Kafka 在使用 Yammer Metrics 埋點的時候,設置為了 Meter 類型,所以 Yammer 會自動計算出 Count、OneMinuteRate、FiveMinuteRate、FifteenMinuteRate、MeanRate 等指標,也就是 1 分鐘、5 分鐘、15 分鐘內的平均流入速率,以及整體平均流入速率。
  • 流出字節:MBean:kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec。和 BytesInPerSec 類似,表示出向流量。不過需要注意的是,流出字節除了普通消費者的消費流量,也包含了副本同步流量。
  • 流入消息:MBean:kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSecBytesInPerSec 和 BytesOutPerSec 都是以 byte 為單位統計的,而 MessagesInPerSec 是以消息個數為單位統計的,也是 Meter 類型,相關屬性都一樣。
  • 分區數量:MBean:kafka.server:type=ReplicaManager,name=PartitionCount這個指標表示某個 Broker 上面總共有多少個分區,包括 leader 分區和 follower 分區。如果多個 Broker 分區不均衡,可能會造成有些 Broker 消耗硬盤空間過快,這是需要注意的。
  • leader 分區數量:MBean:kafka.server:type=ReplicaManager,name=LeaderCount這個指標表示某個 Broker 上面總共有多少個 leader 分區,leader 分區負責數據讀寫,承接流量,所以 leader 分區如果不均衡,會導致某些 Broker 過分繁忙而另一些 Broker 過分空閑,這種情況也是需要我們注意的。

此文章為8月Day8學習筆記,內容來源于極客時間《運維監控系統實戰筆記》,推薦該課程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36173.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36173.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36173.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue 實現重定向、404和路由鉤子(六)

一、重定向 1.1 修改 Main.vue <template><div><el-container><el-aside width"200px"><el-menu :default-openeds"[1]"><el-submenu index"1"><template slot"title"><i class"…

MongoDB常用命令

什么是MongoDB ? MongoDB 是由C語言編寫的&#xff0c;是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下&#xff0c;添加更多的節點&#xff0c;可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為一個…

【網絡基礎實戰之路】基于BGP協議中的聯邦號連接三個AS區域的實戰詳解

系列文章傳送門&#xff1a; 【網絡基礎實戰之路】設計網絡劃分的實戰詳解 【網絡基礎實戰之路】一文弄懂TCP的三次握手與四次斷開 【網絡基礎實戰之路】基于MGRE多點協議的實戰詳解 【網絡基礎實戰之路】基于OSPF協議建立兩個MGRE網絡的實驗詳解 【網絡基礎實戰之路】基于…

Dalsa線陣相機說明(Linea Color GigESeries 2k and 4K)

文章目錄 一. Dalsa相機軟件整體架構二. 相機編號說明以及軟件要求三. 相機硬件參數三. 相機基本參數四. 軟件參數設置列表1. Sensor Control Category2. I/O Control Category3. Counter and Timer Control Category4. Advanced Processing Control Category(1) 平場校正介紹(…

學習Vue:插值表達式和指令

在 Vue.js 中&#xff0c;Vue 實例與數據綁定是構建動態交互界面的關鍵。在這篇文章中&#xff0c;我們將重點介紹 Vue 實例中兩種實現數據綁定的方式&#xff1a;插值表達式和指令。這些機制允許您將數據無縫地渲染到界面上&#xff0c;實現實時的數據更新和展示。 插值表達式…

U盤提示格式化怎么修復?學會這幾個方法!

“不知道大家有沒有遇到過將u盤插入電腦后提示格式化的情況呀&#xff1f;第一次遇到這種情況真的好無助&#xff0c;這是可以修復的嗎&#xff1f;請大家幫幫我&#xff01;” U盤作為一個便捷的存儲工具&#xff0c;幫助我們存儲了很多重要的數據和文件。但在使用的過程中&am…

Dockerfile 使用技巧篇

默認的 docker 鏡像使用 Linux 來當作基礎鏡像 01. 使用 alpine 鏡像&#xff0c;而不是默認的 linux 鏡像 PS: alpine 譯為高山植物&#xff0c;就是很少的資源就能存活的意思。alpine 裁剪了很多不必要的 linux 功能&#xff0c;使得鏡像體積大幅減小了。 比如 FROM node:1…

PHP8定義字符串的方法-PHP8知識詳解

字符串&#xff0c;顧名思義&#xff0c;就是將一堆字符串聯在一起。字符串簡單的定義方法是使用英文單引號&#xff08; &#xff09;或英文雙引號&#xff08;" "&#xff09;包含字符。另外&#xff0c;還可以使用定界符定義字符串。本文還介紹了字符串的連接符。…

TCP的三次握手和四次揮手

文章目錄 三次握手四次揮手TIME_WAITCLOSE_WAIT 使用wireshark觀察 三次握手 握手的最終目的是主機之間建立連接 首先要有兩個預備知識點 三次握手建立連接不一定會成功&#xff0c;其中最擔心的就是最后一次握手失敗&#xff0c;不過會有配套的解決方案建立好連接后是需要被…

【重溫老古董——Strust2框架】基于Idea使用maven創建Strust2項目

1、新建項目 紅色圈出的部分是【強制】,其他部分看個人喜好。 2、修改 pom 文件,管理依賴 <dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.5.22</version></dependency&g…

微服務中RestTemplate訪問其他服務返回值轉換問題

背景&#xff1a; 接收一個springcloud項目&#xff0c;UI模塊訪問其他服務的接口&#xff0c;返回數據統一都是使用fastjson進行轉換&#xff0c;但是新開發了幾個新模塊之后發現fastjson很多bug&#xff08;各種內存溢出&#xff09;&#xff0c;但是很多地方已經重度依賴fa…

數據結構:力扣OJ題(每日一練)

目錄 題一&#xff1a;環形鏈表 思路一&#xff1a; 題二&#xff1a;復制帶隨機指針的鏈表 思路一&#xff1a; 本人實力有限可能對一些地方解釋的不夠清晰&#xff0c;可以自己嘗試讀代碼&#xff0c;望海涵&#xff01; 題一&#xff1a;環形鏈表 給定一個鏈表的頭節點…

IDEA如何調試Stream API

Stream API現在在實際開發中應用非常廣泛&#xff0c;經常會遇到需要調試Stream API的場景&#xff0c;這篇文章主要講解如何使用IDEA調試Stream Testpublic void test(){Stream.of(10, 20, 30, 40, 50).mapToInt(e->e*10).filter(e->e>200).forEach(System.out::pri…

使用css實現時間線布局(TimeLine)

前言 在使用uni-app開發微信小程序過程中&#xff0c;遇到了時間軸布局&#xff0c;由于每項的內容高度不一致&#xff0c;使用uniapp自帶的擴展組件uni-steps&#xff0c;樣式布局無法對齊豎線&#xff0c;于是自己造輪子&#xff0c;完成特殊的布局。顯示效果如下&#xff1…

linux shell變量

linux shell變量 1、變量命名規則2、只讀變量3、刪除變量 1、變量命名規則 變量名不能加$命名只能使用英文字母、數字和下劃線&#xff0c;首個字母不能以數字開頭中間不能有空格。可以有下劃線不能使用標點符號不能使用bash中的關鍵字 username"tom"引用 $userna…

WebDAV之π-Disk·派盤+Commander One

Commander one是一款為Mac用戶設計的雙窗格文件管理器,Commander One專業版在原先的版本功能擁有較大的提升。Commander One PRO可以幫助大家將文件從一個地方復制到另一個地方,支持多標簽瀏覽、搜索、自定義熱鍵設置、顯示隱藏文件等功能。 π-Disk派盤 – 知識管理專家 派…

(一)創建型設計模式:4、原型模式(Prototype Pattern)

目錄 1、原型模式的含義 2、C實現原型模式的簡單實例 1、原型模式的含義 通過復制現有對象來創建新對象&#xff0c;而無需依賴于顯式的構造函數或工廠方法&#xff0c;同時又能保證性能。 The prototype pattern is a creational design pattern in software development. …

【校招VIP】java語言考點之Map1.7和1.8

考點介紹&#xff1a; HashMap是大中小廠面試的高頻考點&#xff0c;主要從底層結構&#xff0c;和線程安全等角度來進行考察&#xff0c;考察點比較集中&#xff0c;但是有一定難度。 分為初級和高級兩種&#xff1a;初級一般集中在中小公司的map的key-value的可重復和可空問題…

Server - WandB 統計運行 Epoch 以及 手動上傳日志

歡迎關注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132227253 WandB (Weights & Biases) 是在線的模型訓練可視化工具&#xff0c;可以幫助跟蹤機器學習項目&#xff0c;記錄運行中的超參數和輸…

linux shell快速入門

linux shell快速入門 0 、前置1、簡單使用 0 、前置 一安裝linux的虛擬環境 1、簡單使用 1、新建/usr/shell目錄 2、新建hello.sh 文件 3、編寫腳本文件# !/bin/bashecho "hello world"查看是否具備執行權限 新增執行權限 chomd x hello.sh執行hello.sh文件 /b…