Kafka運維實戰 14 - kafka消費者組消費進度(Lag)深入理解【實戰】

目錄

    • 什么是消費者 Lag
      • 舉例說明:
      • Lag 的意義:
    • Lag 監控和查詢
      • kafka-consumer-groups
        • 基本語法
        • 常用命令示例
        • 1. 查看單個消費者組的詳細信息(最常用)
        • 2. 列出所有消費者組(只顯示名稱)
        • 3. 列出所有消費者組(有詳情信息,可以通過grep過濾topic和消費者組對應信息)
        • 4. 查看消費者組成員信息
      • Golang 代碼實現 Lag 監控

什么是消費者 Lag

在消息隊列系統(如 Kafka)中,消費者 Lag(也稱為 “滯后量”) 是衡量消費者(或消費者組)處理消息進度的核心指標,它表示尚未被消費的消息數量。
具體來說,Lag 的計算方式是:

Lag = 分區當前最大偏移量(Max Offset) - 消費者已提交的偏移量(Committed Offset)

  • 最大偏移量(Max Offset):分區中最新一條消息的位置(即已經生產的消息總量標識)。
  • 已提交偏移量(Committed Offset):消費者組已經成功處理并提交的最新消息位置(即已經消費完成的進度標識)。

通常來說,Lag 的單位是消息數,而且我們一般是在主題這個級別上討論 Lag 的,但實際上,Kafka 監控 Lag 的層級是在分區上的。如果要計算主題級別的,你需要手動匯總所有主題分區的 Lag,將它們累加起來,合并成最終的 Lag 值。

舉例說明:

假設某個分區的消息偏移量是從 0 開始遞增的:

  1. 目前分區中最新的消息偏移量是 100(即已生產了 101 條消息,0~100)。
  2. 消費者組已提交的偏移量是 80(即已處理完 0~80 的消息)。

此時,Lag = 100 - 80 = 20,意味著還有 20 條消息(81~100)未被消費。

Lag 的意義:

  • Lag = 0:表示消費者完全跟上了消息生產速度,沒有未處理的消息。
  • Lag 增大:說明消費者處理速度慢于消息生產速度,出現了消息積壓,可能導致業務延遲。
  • Lag 長期不為 0:可能是消費者能力不足、邏輯阻塞或系統異常的信號,需要排查。

Lag 監控和查詢

kafka-consumer-groups

kafka-consumer-groups 腳本是 Kafka 為我們提供的最直接的監控消費者消費進度的工具。

kafka-consumer-groups.sh 是 Kafka 自帶的命令行工具,用于管理和查詢消費者組(Consumer Group)的信息,包括消費進度(Lag)、位移(Offset)、成員信息等。它是排查消費問題的常用工具,適用于快速診斷消費者組狀態。

基本語法
kafka-consumer-groups.sh --bootstrap-server <kafka-broker地址> [選項]

核心參數說明:

  • --bootstrap-server:指定 Kafka 集群的 broker 地址(如 localhost:9092 或多個地址用逗號分隔),必須指定
  • --group:指定消費者組名稱(操作單個組時使用)。
  • --all-groups:操作所有消費者組(如查詢所有組的信息)。
  • --describe:查看消費者組的詳細信息(包括每個分區的位移和 Lag)。
常用命令示例
1. 查看單個消費者組的詳細信息(最常用)
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-consumer-group

輸出示例及解讀:

GROUP           TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                     HOST            CLIENT-ID
my-consumer-group test-topic      0          80              100             20              consumer-1-abc123                              /192.168.1.1    consumer-1
my-consumer-group test-topic      1          50              50              0               consumer-2-def456                              /192.168.1.2    consumer-2

字段含義:

  • GROUP:消費者組名稱。
  • TOPIC:消費的主題名稱。
  • PARTITION:主題的分區編號。
  • CURRENT-OFFSET:消費者組已提交的位移(已處理到的位置)。
  • LOG-END-OFFSET:分區最新的消息位移(已生產的最新位置)。
  • LAG:未消費的消息數量(LOG-END-OFFSET - CURRENT-OFFSET)。
  • CONSUMER-ID/HOST/CLIENT-ID:當前消費該分區的消費者信息。
2. 列出所有消費者組(只顯示名稱)
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

輸出示例:

my-consumer-group
order-service-group
user-tracking-group
3. 列出所有消費者組(有詳情信息,可以通過grep過濾topic和消費者組對應信息)
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --all-groups
./bin/kafka-consumer-groups.sh --bootstrap-server 192.168.37.10:9092   --all-groups --describe 2>/dev/null  | grep -v GROUP |awk '{size[$1" "$2]+=$6} END{for(i in size) if(size[i]>300) {print "    消費.對應Tpic "i,"的積壓數為:"size[i]}}'

實現效果
在這里插入圖片描述

4. 查看消費者組成員信息
kafka-consumer-groups.sh --bootstrap-server localhost:9092 \--describe --group my-consumer-group \--members

輸出消費者組內的成員列表、分配的分區等信息,用于確認組內消費者是否正常在線。

Golang 代碼實現 Lag 監控

填坑,待完善!

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

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

相關文章

設計模式(十三)結構型:代理模式詳解

設計模式&#xff08;十三&#xff09;結構型&#xff1a;代理模式詳解代理模式&#xff08;Proxy Pattern&#xff09;是 GoF 23 種設計模式中的結構型模式之一&#xff0c;其核心價值在于為其他對象提供一種間接訪問的機制&#xff0c;以控制對原始對象的訪問。它通過引入一個…

24點數學游戲(窮舉法求解表達式)

摘要本畢業設計旨在利用MATLAB技術實現一個24點數學游戲&#xff0c;采用窮舉法求解所有可能的表達式組合。通過全排列數字、枚舉運算符及括號位置&#xff0c;結合遞歸回溯算法&#xff0c;系統能夠高效地搜索所有可能的運算路徑&#xff0c;并驗證結果是否為24。實驗結果表明…

【web應用】如何進行前后端調試Debug? + 前端JavaScript調試Debug?

文章目錄一、前后端&#xff1a;后端以Debug模式運行后端項目&#xff0c;打斷點二、前后端&#xff1a;前端項目在瀏覽器中調試三、單獨前端&#xff1a;前端JavaScript調試1、控制臺輸出2、網頁調試器中添加斷點3、debugger關鍵字一、前后端&#xff1a;后端以Debug模式運行后…

FreeCAD開發樓梯參數化三維模型和鋼格柵

根據樓梯標準圖集開發各種樓梯。上行左轉&#xff0c;上行右轉&#xff0c;對應的欄桿也是配套2種。樓梯總成鋼格柵標準里的跨度和承載 扁鋼尺寸&#xff0c;輕松切換和修改參數。格柵綜合本來格柵上橫桿是冷軋扭鋼筋&#xff0c;先繪制一個圓柱&#xff0c;再做一個內切正方形…

【AcWing 836題解】合并集合

AcWing 836. 合并集合 【題目描述】 在查看解析之前&#xff0c;先給自己一點時間思考哦&#xff01; 【題解】 并查集是一種用于處理集合合并與查詢問題的數據結構&#xff0c;通常支持以下兩種操作&#xff1a; Find&#xff1a;查詢一個元素所在的集合。 Union&#xff1a…

MySQL鎖機制與MVCC原理剖析

在MySQL中&#xff0c;我們使用到了它的各種類鎖&#xff1b;按照它的維度&#xff0c;有各種鎖 從數據庫的操作粒度有&#xff0c;表鎖&#xff0c;行鎖。從數據庫的操作的類型&#xff0c;有讀鎖和寫鎖。性能上有樂觀鎖和悲觀鎖。 在上一篇文章中的事務隔離級別&#xff0c;需…

C++學習(線程相關)

目錄 一、線程庫thread 1.使用外部函數 2. 使用類的函數 3. 添加參數 二、線程庫 mutex 1.使用lock()方法 2.try_lock()方法 三、線程庫lock_guard 四、線程庫unique_lock 1.adopt_lock 2.defer_lock() 五、線程庫call_once 六、線程庫promise & future 七、c…

EPOLLONESHOT 深度解析:Linux epoll 的單次觸發機制

EPOLLONESHOT 深度解析&#xff1a;Linux epoll 的單次觸發機制 EPOLLONESHOT 是 Linux epoll 接口中的高級事件標志&#xff0c;用于實現精確的事件單次觸發控制。以下是其全面技術解析&#xff1a; 核心設計理念 #mermaid-svg-Xg5sCLdddqmKsvKG {font-family:"trebuchet…

深入解析MongoDB分片原理與運維實踐指南

深入解析MongoDB分片原理與運維實踐指南 技術背景與應用場景 隨著互聯網業務的高速發展&#xff0c;單節點MongoDB實例在數據量和訪問并發上都面臨瓶頸。為了解決數據存儲容量受限和讀寫性能下降的問題&#xff0c;MongoDB官方提供了分片&#xff08;Sharding&#xff09;方案&…

基于Django的天氣數據可視化分析預測系統

【86-Django】基于Django的天氣數據可視化分析預測系統&#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介 二、項目界面展示 三、項目視頻展示 四、技術架構 五、核心功能模塊 六、部署教程一、項目簡介 隨著全球氣候變化和極端天氣事件的頻發&am…

怎么放大單片機輸出電流

單片機作為電子系統的控制核心&#xff0c;其 I/O 口輸出電流通常較小&#xff08;一般在 10-20mA 左右&#xff09;&#xff0c;難以直接驅動繼電器、電機、大功率 LED 等需要較大工作電流的外設。因此&#xff0c;在實際應用中需通過特定電路放大單片機輸出電流&#xff0c;實…

站長百科類網站pbootcms模板(自適應手機端)+利于SEO優化(下載)

站長百科類網站pbootcms模板(自適應手機端)利于SEO優化 模板介紹&#xff1a; PbootCMS內核開發的模板&#xff0c;該模板屬于新聞資訊、新聞博客類企業使用&#xff01; 頁面簡潔簡單&#xff0c;容易管理&#xff0c;附帶測試數據&#xff01; 模板特點&#xff1a; 1、手工書…

【Golang】Go語言函數

Go語言函數 文章目錄Go語言函數Go函數特點一、函數的基本格式定義二、匿名函數三、自執行函數四、閉包函數五、延遲調用Go函數特點 無需聲明原型支持不定 變參支持多返回值支持匿名函數和閉包函數也是一種類型&#xff0c;一個函數可以賦值給變量不支持嵌套&#xff0c;一個包…

JAVA算法練習題day2

雙指針4.移動零二刷昨天的題&#xff0c;學習了新的數據結構StringBuilder。專為頻繁字符串拼接設計的可變字符串類。(https://blog.csdn.net/m0_73941339/article/details/145651287)二刷完昨天的題目&#xff0c;做到這題腦子已經轉不動了。做雙指針&#xff0c;一般雙指針初…

LLM2Rec-新國立-KDD2025-微調LLM獲得蘊含協同信息的embedding

文章目錄1. 背景與問題任務背景動機LLM2Rec 兩大步驟2. 方法2.1 Collaborative Supervised Fine-tuning&#xff08;CSFT&#xff09;2.2 Item-level Embedding Modeling2.2.1 從單向注意力 → 雙向注意力&#xff08;Bidirectional attention&#xff09;2.2.2 商品級別的對比…

前端學習9:JavaScript--對象與原型

前言&#xff1a;適合有基礎的同學入門嘗試 / 復習回憶。對象基礎&#xff1a;1.創建用戶對象const user {// 屬性&#xff08;鍵值對&#xff09;name: "小島",age: 20,isAdmin: false, }2.方法&#xff08;函數屬性&#xff09;sayHello() {console.log(你好&…

網絡:應用層

網絡&#xff1a;應用層 我們要知道&#xff0c;所有的問題解決都是在應用層。:happy: 協議是一種約定&#xff0c;也就是雙方約定好的結構化的數據。但是在讀寫數據時我們都是按字符串的方式來發送接受的&#xff0c;那么我們應該如和傳輸結構化的數據呢&#xff1f;應用層協…

rust-包和箱子

&#x1f4e6; 圖解 Rust 代碼組織層級 #mermaid-svg-fBDy1PDZZ6bi000z {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fBDy1PDZZ6bi000z .error-icon{fill:#552222;}#mermaid-svg-fBDy1PDZZ6bi000z .error-text{fi…

C++算法競賽篇(五)循環嵌套題型講解

C算法競賽篇&#xff08;五&#xff09;循環嵌套題型講解前言C循環嵌套題型講解第一題 包含數字的9第二題 求出 e 的值第三題 斐波那契數列第四題 第 n 小的質數第五題 水仙花數前言 前面的題型里我們認識了C里面的三大循環本篇博客我們開始講解C循環嵌套題型 我的個人主頁&am…

Gradio全解8——ChatInterfaceChatbot:聊天界面類與聊天機器人(3)——ChatInterface的多模態功能與附加輸入輸出

Gradio全解8——ChatInterface&Chatbot&#xff1a;聊天界面類與聊天機器人&#xff08;3&#xff09;——ChatInterface的多模態功能與附加輸入輸出8.3 ChatInterface的多模態功能與附加輸入輸出8.3.1 多模態功能1. 設置multimodal和fn參數2. 傳入MultimodalTextbox組件及…