Java有没有Kafka监控API?

Is there any Kafka Monitoring API in Java?

我正在尝试编写一个 Java 代码来获取消费者抵消和滞后 我们的卡夫卡集群。 有没有JavaAPI可以得到这个信息?

你应该在这个项目中找到你需要的东西:https://github.com/apache/storm/tree/master/external/storm-kafka/src/jvm/storm/kafka

在那里您可以看到 kafka.javaapi.consumer.SimpleConsumer 及其使用方式。使用 Maven 从 Maven 存储库中提取所有依赖项,您应该会看到一个提供 Kafka API 个您需要的电话。

上面引用的 github 项目应该为您提供有关如何使用 API 的额外指示。

您可以使用 Java 管理扩展 (JMX) 来监控您的 KAFKA.
Kafka 已经内置了 JMX,你只需要启用它 -

在kafka设置中,编辑“kafka-运行-class.sh”脚本文件,添加以下行:

KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false "

此外,编辑 kafka 安装程序中存在的“kafka-server-start.sh”脚本文件,通过添加以下行将 JMX 端口设置为 9999:

export JMX_PORT=${JMX_PORT:-9999}

是的,有一个应用写在java中来跟踪Kafka中所有消费者组的偏移量cluster.You可以得到结果在 Json 或 html 中,您还可以将应用配置为定期将偏移量指标推送到 StatsD 服务器。

这里是项目:

https://github.com/Symantec/kafka-monitoring-tool

监控结果:

组的偏移量存储在zookeeper中,你需要一个zookeeper实例,然后使用方法zk.getChildren(path,false)获取节点信息,使用方法zk.getData(path,false,null)获取偏移量信息。

设置path="/consumers"即可获取消费组列表

设置path="/consumers/xxx group/offset/xxx topic/xxx partition"即可得到偏移量

如果您使用 Kafka 客户端库及其 API,您可以获得此信息。也就是说,如果您使用 Kafka metrics/monitoring,有些工具可以为您提供这些信息以及更多信息。 Burrow from Linkedin and SPM for Kafka 来自 Sematext 的两个值得一看的好东西。