【问题标题】:How to monitor consumer lag in kafka via jmx?如何通过jmx监控kafka中的消费者滞后?
【发布时间】:2019-08-28 19:18:43
【问题描述】:

我有一个 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

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

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 中不存在并且被另一个替换。虽然,我在网上找不到任何资源,其中包含有关如何以及在何处获取该指标的最新信息

【问题讨论】:

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


    【解决方案1】:

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

    Kafka Minion 相对于 Burrow 的优势:

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

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

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

    【讨论】:

    • 如果支持 kerberized kafka 集群就好了
    • @AshikaUmangaUmagiliya 我们正在努力,PR 即将推出。审查和测试表示赞赏。有一个开放的 github 问题,让我们在那里讨论
    • @kentor 我正在尝试将 Minions 与 AWS MSK 集成,这是链接,请您帮忙stackoverflow.com/questions/61641056/kakfa-minions-with-aws-msk
    【解决方案2】:

    kafka.consumer JMX 指标仅存在于消费者进程本身,而不存在于 Kafka 代理进程中。请注意,您不会使用 Java 以外的消费者库从消费者那里获得 kafka.consumer 指标。

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

    【讨论】:

    • 你所说的不太可能是真的,考虑到我确实使用脚本kafka-consumer-groups.sh 查询了代理,而没有连接消费者,并获得了数据。看我的问题,输出就在那里
    • 正确,您将在kafka-consumer-groups.sh 输出中看到消费者组滞后。这在内部通过__consumer_offsets 主题计算滞后。尽管您可以从命令行工具中看到诸如延迟之类的指标,但这并不意味着这些指标是通过 JMX 从代理中公开的。
    • 哦,好的,知道了。有没有办法以更快的方式执行 kafka-consumer-groups.sh 的相同计算?该脚本需要 25 秒才能运行。如果我能在一秒钟内得到相同的结果,我就可以自己将这些数据发送给 prometheus(不需要 jmx)
    • @Tom 如前所述,Burrow 将使用偏移量主题,您可以将其与 Telegraf 结合使用,Telegraf 有一个用于 Burrow 的刮板(假设 Burrow 不执行 Prometheus 指标),用于将这些值推送到指标存储
    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多