如何通过jmx监控Kafka的消费者滞后?

vatpfxk5  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(476)

我有一个Kafka设置,其中包括一个jmx出口商普罗米修斯。我在寻找一个度量,它根据topic和groupid给出偏移滞后。我在运行Kafka2.2.0。
一些在线资源指向一个称为 kafka.consumer ,但我的设置中没有此类度量。
从我的jmxterminal:

$>domains

# following domains are available

JMImplementation
com.sun.management
java.lang
java.nio
java.util.logging
jdk.management.jfr
kafka
kafka.cluster
kafka.controller
kafka.coordinator.group
kafka.coordinator.transaction
kafka.log
kafka.network
kafka.server
kafka.utils

但是,我可以使用以下命令查看所需的数据:

root@kafka-0:/kafka# bin/kafka-consumer-groups.sh --describe --group benchmark_consumer_group --bootstrap-server localhost:9092
Consumer group 'benchmark_consumer_group' has no active members.

TOPIC               PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
benchmark_topic_10B 2          2795128         54223220        51428092        -               -               -
benchmark_topic_10B 9          4               4               0               -               -               -
benchmark_topic_10B 6          7               7               0               -               -               -
benchmark_topic_10B 7          5               5               0               -               -               -
benchmark_topic_10B 0          2834028         54224939        51390911        -               -               -
benchmark_topic_10B 1          15342331        54222342        38880011        -               -               -
benchmark_topic_10B 4          5               5               0               -               -               -
benchmark_topic_10B 5          6               6               0               -               -               -
benchmark_topic_10B 8          8               8               0               -               -               -
benchmark_topic_10B 3          4               4               0               -               -               -

但这并没有帮助,因为我需要从一个指标跟踪if。此外,此命令执行大约需要25秒,因此不合理地将其用作度量的源。
我猜是这个指标 kafka.consumer 在版本2.2.0中不存在,已被另一个替换。尽管如此,我在网上找不到任何关于如何以及从何处获得该指标的最新信息的资源

qrjkbowd

qrjkbowd1#

你可以给Kafka手下(https://github.com/cloudworkz/kafka-minion )试试看。虽然kafka minion在内部的工作方式类似于burrow(consumes\u consumer\u offset topic for consumer group offset),但对于您的用例来说,它有几个优点
Kafka仆从比穴居的优势:
有原生的prometheus支持(不需要额外的部署就可以将度量暴露给prometheus)
有一个grafana Jmeter 板示例
具有其他度量(例如cons的最后提交时间戳)umergroup:topic:分区组合、提交、有关清理策略的信息、可以列出给定主题的所有使用者组等)
不包括zookeeper依赖项(这也意味着不支持仍向zookeeper提交偏移量的使用者)
高可用性支持(!!)。burrow的问题是,它总是公开度量,当它刚刚开始使用\uu consumer\u offset主题时,这将是错误的。因此,您不能在ha模式下运行它。如果要基于消费群滞后设置警报,则会出现此问题
kafka minion不支持多个集群,这降低了代码和最终用户的复杂性。很明显,你仍然可以在每个集群中部署Kafka仆从
免责声明:我是Kafka仆从的作者,我仍然在寻找其他用户的更多反馈。我打算积极维护和发展我的项目出口商,我为公司和社区工作。
回答您关于使用 kafka-consumer-groups.sh shell脚本。这是行不通的,因为它不能报告不活跃消费者的滞后,这有点适得其反。

tv6aics1

tv6aics12#

这个 kafka.consumer jmx度量只存在于使用者进程本身上,而不存在于kafka代理进程上。请注意,您不会得到 kafka.consumer 来自使用java库以外的使用者库的使用者的度量。
目前,kafka代理本身还没有针对消费者延迟的jmx指标。还有其他的解决方案通常用于监控消费者滞后,比如linkedin的burrow。还有一些开源项目,比如kafka9.offset,它们通过jmx公开了消费者滞后度量,但可能不会更新以使用最新的kafka。

相关问题