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

Tom*_*ino 5 monitoring apache-kafka kafka-consumer-api

我有一个 kafka 设置,其中包含一个到 prometheus 的 jmx 导出器。我正在寻找一个指标,它根据主题和 groupid 给出偏移滞后。我正在运行 kafka 2.2.0。

一些在线资源指向一个名为 的指标kafka.consumer,但我的设置中没有这样的指标。

从我的 jmx 终端:

$>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
Run Code Online (Sandbox Code Playgroud)

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

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               -               -               -


Run Code Online (Sandbox Code Playgroud)

但这无济于事,因为我需要根据指标进行跟踪。此外,该命令的执行时间大约为 25 秒,因此用作指标来源是不合理的。

我的猜测是该指标kafka.consumer在 2.2.0 版中不存在并被替换为另一个。虽然,我无法在网上找到任何资源,其中包含有关如何以及从何处获取该指标的最新信息

ken*_*tor 6

你可以试试Kafka Minion ( https://github.com/cloudworkz/kafka-minion )。虽然 Kafka Minion 在内部的工作方式与 Burrow 类似(消耗 __consumer_offsets 主题用于消费者组偏移),但它对您的用例有几个优势

对于您的案例,Kafka Minion 比 Burrow 的优势:

  • 具有原生 prometheus 支持(无需额外部署即可将指标公开给 prometheus)
  • 有一个示例 Grafana 仪表板
  • 有额外的指标(例如消费者组的上次提交时间戳:主题:分区组合、提交率、有关清理策略的信息,您可以列出给定主题的所有消费者组等)
  • 不包含zookeeper依赖项(这也意味着不支持仍然向zookeeper提交偏移量的消费者)
  • 高可用性支持 (!!)。Burrow 有一个问题,它总是会公开指标,当它刚刚开始使用 __consumer_offsets 主题时,这将是错误的。因此,您不能在 HA 模式下运行它。当您想根据消费者组滞后设置警报时,这是一个问题
  • Kafka Minion 不支持多个集群,这降低了代码和作为最终用户的复杂性。您显然仍然可以为每个集群部署 Kafka Minion

免责声明:我是 Kafka Minion 的作者,我仍在寻找其他用户的更多反馈。我打算为我的项目、我工作的公司和社区积极维护和发展出口商。

使用kafka-consumer-groups.shshell 脚本回答有关您所看到内容的问题。这不会起作用,因为它无法报告不活跃的消费者的滞后,这有点适得其反。


小智 5

kafka.consumerJMX指标只存在于消费者的过程本身,而不是在卡夫卡经纪人处理。请注意,您不会kafka.consumer使用 Java 以外的消费者库从消费者那里获得指标。

目前,Kafka 代理本身没有用于消费者延迟的可用 JMX 指标。还有其他通常用于监控消费者滞后的解决方案,例如LinkedIn 的Burrow。还有一些开源项目,例如kafka9.offsets,它们通过 JMX 公开消费者滞后指标,但可能不会更新以使用最新的 Kafka。