【发布时间】:2015-12-04 11:05:36
【问题描述】:
我正在尝试编写 Java 代码来获取消费者偏移和滞后 我们的 kafka 集群。 是否有 Java API 来获取这些信息?
【问题讨论】:
标签: java message-queue apache-kafka broker
我正在尝试编写 Java 代码来获取消费者偏移和滞后 我们的 kafka 集群。 是否有 Java API 来获取这些信息?
【问题讨论】:
标签: java message-queue apache-kafka broker
你应该在这个项目中找到你需要的东西:https://github.com/apache/storm/tree/master/external/storm-kafka/src/jvm/storm/kafka
在那里你可以看到 kafka.javaapi.consumer.SimpleConsumer 以及它是如何被使用的。使用 Maven 从 Maven 存储库中提取所有依赖项,您应该会看到一个 kafka_2.10-0.8.2.1.jar 文件,该文件提供了您需要的 Kafka API 调用。
上面引用的 github 项目应该为您提供有关如何使用 API 的额外指示。
【讨论】:
您可以使用 Java 管理扩展 (JMX) 来监控您的 KAFKA。
Kafka 已经内置了 JMX,您只需启用它 -
在 kafka 设置中,编辑“kafka-run-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:
导出 JMX_PORT=${JMX_PORT:-9999}
【讨论】:
是的,有一个用java编写的应用程序来跟踪Kafka集群中所有消费者组的偏移量。你可以得到Json或html的结果,你也可以配置应用程序定期将偏移量指标推送到 StatsD 服务器。
这是项目:
https://github.com/Symantec/kafka-monitoring-tool
监测结果:
【讨论】:
group的偏移量存储在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 指标/监控,有些工具可以为您提供这些信息以及更多信息。来自Linkedin 的Burrow 和来自Sematext 的SPM for Kafka 是两个不错的选择。
【讨论】: