如何通过jmx监控kafka中的消费者滞后?
How to monitor consumer lag in kafka via jmx?
我有一个 kafka 设置,其中包括一个到 prometheus 的 jmx 导出器。我正在寻找一个指标,它根据主题和组 ID 给出偏移量滞后。我是 运行 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 版本中不存在,并被另一个替代。虽然,我无法在网上找到任何资源,其中包含有关如何以及在何处获取该指标的最新信息
kafka.consumer
JMX 指标仅存在于消费者进程本身,而不存在于 Kafka 代理进程。请注意,您不会从使用 Java 以外的消费者库的消费者那里获得 kafka.consumer
指标。
目前,Kafka 代理本身没有针对消费者延迟的可用 JMX 指标。还有其他通常用于监控消费者滞后的解决方案,例如 Burrow by LinkedIn. There are also a few open source projects such as kafka9.offsets 通过 JMX 公开消费者滞后指标,但可能无法更新以与最新的 Kafka 一起使用。
您可以试试 Kafka Minion ( https://github.com/cloudworkz/kafka-minion )。虽然 Kafka Minion 在内部的工作方式与 Burrow 类似(消费 __consumer_offsets 消费者组偏移主题),但它对您的用例有几个优势
对于您的案例,Kafka Minion 相对于 Burrow 的优势:
- 具有本机 prometheus 支持(无需额外部署即可将指标公开给 prometheus)
- 有一个示例 Grafana 仪表板
- 有其他指标(例如 consumergroup:topic:partition 组合的最后一次提交时间戳、提交率、有关清理策略的信息,您可以列出给定主题的所有消费者组等)
- 不包含 zookeeper 依赖项(这也意味着不支持仍然向 zookeeper 提交偏移量的消费者)
- 高可用性支持 (!!)。 Burrow 有一个问题,它总是会公开指标,当它刚刚开始使用 __consumer_offsets 主题时,这将是错误的。因此,您不能 运行 它处于 HA 模式。当你想根据消费者组延迟设置警报时,这是一个问题
- Kafka Minion 不支持多集群,这降低了代码和最终用户的复杂性。您显然仍然可以为每个集群部署 Kafka Minion
免责声明:我是 Kafka Minion 的作者,我仍在寻找其他用户的更多反馈。我打算为我的项目、我为之工作的公司和社区积极维护和开发出口商。
回答有关使用 kafka-consumer-groups.sh
shell 脚本看到的内容的问题。这不会起作用,因为它无法报告不活跃消费者的滞后情况,这有点适得其反。
我有一个 kafka 设置,其中包括一个到 prometheus 的 jmx 导出器。我正在寻找一个指标,它根据主题和组 ID 给出偏移量滞后。我是 运行 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 版本中不存在,并被另一个替代。虽然,我无法在网上找到任何资源,其中包含有关如何以及在何处获取该指标的最新信息
kafka.consumer
JMX 指标仅存在于消费者进程本身,而不存在于 Kafka 代理进程。请注意,您不会从使用 Java 以外的消费者库的消费者那里获得 kafka.consumer
指标。
目前,Kafka 代理本身没有针对消费者延迟的可用 JMX 指标。还有其他通常用于监控消费者滞后的解决方案,例如 Burrow by LinkedIn. There are also a few open source projects such as kafka9.offsets 通过 JMX 公开消费者滞后指标,但可能无法更新以与最新的 Kafka 一起使用。
您可以试试 Kafka Minion ( https://github.com/cloudworkz/kafka-minion )。虽然 Kafka Minion 在内部的工作方式与 Burrow 类似(消费 __consumer_offsets 消费者组偏移主题),但它对您的用例有几个优势
对于您的案例,Kafka Minion 相对于 Burrow 的优势:
- 具有本机 prometheus 支持(无需额外部署即可将指标公开给 prometheus)
- 有一个示例 Grafana 仪表板
- 有其他指标(例如 consumergroup:topic:partition 组合的最后一次提交时间戳、提交率、有关清理策略的信息,您可以列出给定主题的所有消费者组等)
- 不包含 zookeeper 依赖项(这也意味着不支持仍然向 zookeeper 提交偏移量的消费者)
- 高可用性支持 (!!)。 Burrow 有一个问题,它总是会公开指标,当它刚刚开始使用 __consumer_offsets 主题时,这将是错误的。因此,您不能 运行 它处于 HA 模式。当你想根据消费者组延迟设置警报时,这是一个问题
- Kafka Minion 不支持多集群,这降低了代码和最终用户的复杂性。您显然仍然可以为每个集群部署 Kafka Minion
免责声明:我是 Kafka Minion 的作者,我仍在寻找其他用户的更多反馈。我打算为我的项目、我为之工作的公司和社区积极维护和开发出口商。
回答有关使用 kafka-consumer-groups.sh
shell 脚本看到的内容的问题。这不会起作用,因为它无法报告不活跃消费者的滞后情况,这有点适得其反。