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

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

你好,我是胡夕。今天我要跟你分享的主题是:消费者组消费进度监控如何实现。
对于 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 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(58)

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

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

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

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

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

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

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

    作者回复: 是的

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

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

    7
  • 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也是同理

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

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

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

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

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

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

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

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

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