如何通过JMX监视卡夫卡的消费者滞后?

时间:2019-04-07 14:15:58

标签: apache-kafka monitoring kafka-consumer-api

我有一个kafka设置,其中包括一个用于prometheus的jmx导出器。我正在寻找一个指标,该指标基于主题和groupid给出偏移量滞后。我正在运行kafka 2.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               -               -               -


但这无济于事,因为我需要从指标中进行跟踪。另外,此命令的执行时间约为25秒,因此无法用作度量标准的来源。

我的猜测是,指标kafka.consumer在版本2.2.0中不存在,已被另一个指标替代。虽然,我无法在线找到任何资源以及有关如何以及在何处获取该指标的最新信息

2 个答案:

答案 0 :(得分:2)

kafka.consumer JMX指标仅出现在使用者进程本身上,而不出现在Kafka经纪人进程上。请注意,使用Java以外的使用者库,不会从使用者那里获得kafka.consumer指标。

当前,没有来自Kafka经纪人本身的针对消费者滞后的JMX指标。还有其他通常用于监视消费者滞后的解决方案,例如LinkedIn的Burrow。还有一些开源项目,例如kafka9.offsets,这些项目通过JMX公开了消费者滞后指标,但可能没有更新以与最新的Kafka一起使用。

答案 1 :(得分:0)

您可以尝试Kafka奴才(https://github.com/cloudworkz/kafka-minion)。虽然Kafka Minion在内部像Burrow一样工作(消耗__consumer_offsets主题涉及“消费组偏移”),但对于您的用例却有很多优势

Kafka奴才在Burrow方面的优势:

  • 具有本地prometheus支持(无需将指标公开给prometheus的其他部署)
  • 具有示例Grafana仪表板
  • 具有其他指标(例如Consumergroup:topic:partition组合的最后提交时间戳,提交率,有关清除策略的信息,您可以列出给定主题的所有消费者组等)
  • 不包括Zookeeper依赖项(这也意味着不支持仍向Zookeeper进行补偿的消费者)
  • 高可用性支持(!!)。 Burrow的问题是它将始终公开指标,而在刚开始使用__consumer_offsets主题时,这是错误的。因此,您无法在HA模式下运行它。当您要根据消费者组的时滞设置警报时会出现此问题
  • Kafka Minion不支持多个集群,这降低了代码和作为最终用户的复杂性。您显然仍然可以在每个集群上部署Kafka Minion

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

使用kafka-consumer-groups.sh shell脚本回答有关所看到内容的问题。这将无法正常工作,因为它无法报告不活动的消费者的滞后现象,这会适得其反。