Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监
52815 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
结束语 (1讲)
Kafka 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

22 | 消费者组消费进度监控都怎么实现?

records-lead-avg
records-lag-avg
records-lead-min
records-lag-max
指定 Kafka 集群的连接信息和消费者组名
监控独立消费者的 Lag
监控消费者消费进度的工具
方法3:使用 Kafka JMX 监控指标
方法2:使用 Consumer API
方法1:使用 kafka-consumer-groups 脚本
kafka.consumer:type=consumer-fetch-manager-metrics,partition="{partition}",topic="{topic}",client-id="{client-id}"
监控 Lag 和 Lead 值
kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{client-id}"
适用于 Kafka 2.0.0 及以上的版本
计算 Lag 值
查询当前分区最新消息位移和消费者组最新消费消息位移
kafka-consumer-groups 脚本
消费者速度无法匹及生产者的速度可能导致数据不在操作系统的页缓存中
Lag 值很大表示无法跟上生产者的速度
消费者 Lag 值应该很小
反映消费者的运行情况
消费者当前落后于生产者的程度
分享文章给朋友
思考和答案
建议优先考虑方法3
三种方法的比较
使用 Kafka JMX 监控指标
使用 Kafka Java Consumer API 编程
使用 Kafka 自带的命令行工具 kafka-consumer-groups 脚本
Lag 的重要性
滞后程度
开放讨论
小结
监控方法
监控消费者的消费进度的重要性
消费者 Lag 或 Consumer Lag
消费者组消费进度监控
如何实现Kafka消费者组的消费进度监控

该思维导图由 AI 生成,仅供参考

你好,我是胡夕。今天我要跟你分享的主题是:消费者组消费进度监控如何实现。
对于 Kafka 消费者来说,最重要的事情就是监控它们的消费进度了,或者说是监控它们消费的滞后程度。这个滞后程度有个专门的名称:消费者 Lag 或 Consumer Lag。
所谓滞后程度,就是指消费者当前落后于生产者的程度比方说,Kafka 生产者向某主题成功生产了 100 万条消息,你的消费者当前消费了 80 万条消息,那么我们就说你的消费者滞后了 20 万条消息,即 Lag 等于 20 万。
通常来说,Lag 的单位是消息数,而且我们一般是在主题这个级别上讨论 Lag 的,但实际上,Kafka 监控 Lag 的层级是在分区上的。如果要计算主题级别的,你需要手动汇总所有主题分区的 Lag,将它们累加起来,合并成最终的 Lag 值。
我们刚刚说过,对消费者而言,Lag 应该算是最最重要的监控指标了。它直接反映了一个消费者的运行情况。一个正常工作的消费者,它的 Lag 值应该很小,甚至是接近于 0 的,这表示该消费者能够及时地消费生产者生产出来的消息,滞后程度很小。反之,如果一个消费者 Lag 值很大,通常就表明它无法跟上生产者的速度,最终 Lag 会越来越大,从而拖慢下游消息的处理速度。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka消费者组的消费进度监控对于Kafka消费者至关重要。本文介绍了消费者Lag的概念,即消费者当前落后于生产者的程度,并探讨了如何监控消费者的消费进度。文章提出了三种监控方法:使用Kafka自带的命令行工具kafka-consumer-groups脚本、使用Kafka Java Consumer API编程以及使用Kafka自带的JMX监控指标。通过这些方法,读者可以快速了解如何监控Kafka消费者组的消费进度,及时发现并处理消费者滞后的情况,避免造成业务损失。 文章还详细介绍了使用JMX监控指标来监控消费者的Lag值,强调了Lead值的重要性,以及如何在实际生产环境中同时监控Lag值和Lead值。作者建议优先考虑将JMX监控指标配置到主流的监控框架中,同时将其他方法作为备选,以应对各种实际场景。 总的来说,本文通过介绍消费者Lag的概念和三种监控方法,为读者提供了全面的监控消费者组以及独立消费者程序消费进度的指导,帮助读者更好地理解和应用Kafka消费者组的消费进度监控技术。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(59)

  • 最新
  • 精选
  • 刘丹
    对lead这个指标的含义还是不能理解。既然Lead 值是指消费者最新消费消息的位移与分区当前第一条消息的差值。好像这个值应该是越小越好,越小的话就意味着分区里未被消费的消息越少?

    作者回复: lead越小意味着consumer消费的消息越来越接近被删除的边缘,显然是不好的

    2019-07-23
    8
    38
  • zander
    在公司的kafka消费者监控上,经常可以看到lag 为一个负数,比如-3,-109等,想咨询一下,为什么会出现负数呢?

    作者回复: 可能出现丢失数据了。lag<0一定要重点关注

    2019-08-04
    5
    24
  • Guard-God
    老师您好,jmx 监控的lead我认为很重要,但是,我使用JConsole连接后怎么就没有kafka.consumer,这块呢?我测了好多版本,我想问一下,这个是如何配置的

    作者回复: 你连接的是Broker的JMX端口吧,你需要连接consumer的JMX端口

    2019-09-03
    5
    20
  • 风轻扬
    老师,我理解的lead会变小的原因是:kafka的消息会定期清除。所以分区第一条消息的offset值会变大。如果消费的速度慢,则current-offset的值会增长很难。此时lead的值就越来越小。是这样吗?

    作者回复: 是的

    2020-05-20
    2
    11
  • 曾轼麟
    老师,请问你的这个消费者堆积监控代码,是否会触发消费者组的rebalance呢?

    作者回复: 不会引发,因为是用的AdminClient

    2019-12-12
    8
  • helloworld
    若该消费者消费了一个主题中的多个分区,那通过JMX方式的第一个JMX指标kafka.consumer:type=consumer-fetch-manager-metrics,client-id=“{client-id}”角度如何理解,此时的两个监控项records-lag-max和records-lead-min分别代表什么含义?

    作者回复: 这个JMX是在整个consumer级别上统计,而不是在单个topic或topic分区上统计。records-lag-max即记录所有订阅分区上最大的lag。lead也是同理

    2020-03-15
    6
  • 灰机
    老师您好 理想情况下是不是lead值要等于offset-1?

    作者回复: lead = end of offset - log start offset。通常情况下log start offset不等于0

    2019-12-16
    5
  • hunterlodge
    老师,您的那段获取消费组的lag代码,是会导致新的consumer加入到消费组里,从而引起rebalance的吧?

    作者回复: 不会引发lag,因为用的是AdminClient

    2019-12-12
    5
  • 昀溪
    老师 怎么能够获取生产者 消费者和主题的关系呢。 我们想要梳理目前线上的 哪些生产者往哪些主题发消息以及哪些消费者消费某些主题。希望能快速获取并梳理出来 老师能不能给一些思路 谢谢

    作者回复: 目前无法获取到集群中生产者的数量信息,因为broker端并没有这方面的记录。消费者的话可以使用kafka-consumer-groups命令来间接获取

    2019-10-12
    3
    5
  • 陆攀
    老师,除了监控lag外,我还想监控消费的延迟时间。比如我想知道消费的当条数据的产生时间和当前最后一条数据的产生时间的差。这种有什么办法吗?

    作者回复: 消息里面有创建的时间戳,可以用程序自行计算

    2019-08-01
    4
收起评论
显示
设置
留言
59
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部