Java 如何监控用于负载测试的Kafka消息的应用程序处理

Java 如何监控用于负载测试的Kafka消息的应用程序处理,java,apache-zookeeper,apache-kafka,Java,Apache Zookeeper,Apache Kafka,有一个应用程序(不是我的)从卡夫卡读取消息,对其进行一些处理,并将记录存储在数据库中。我用Java编写了一个程序,它以给定的速率将消息写入队列。现在,它通过在测试运行结束时查询数据库来执行一个简单的性能度量,以确保records in=records out。但是,我想对其进行扩展,定期检查队列,以查看应用程序尚未处理的挂起消息的数量,以查看是否正在对其进行备份 我想我可以在Zookeeper中检查应用程序组ID的偏移量。我查看了,但它只提供了基本的消费者示例,而且API文档充其量也很少,所以我

有一个应用程序(不是我的)从卡夫卡读取消息,对其进行一些处理,并将记录存储在数据库中。我用Java编写了一个程序,它以给定的速率将消息写入队列。现在,它通过在测试运行结束时查询数据库来执行一个简单的性能度量,以确保records in=records out。但是,我想对其进行扩展,定期检查队列,以查看应用程序尚未处理的挂起消息的数量,以查看是否正在对其进行备份

我想我可以在Zookeeper中检查应用程序组ID的偏移量。我查看了,但它只提供了基本的消费者示例,而且API文档充其量也很少,所以我不确定如何查找这些信息

我需要调用哪些API来找出应用程序当前在队列中的位置,以及该位置后面的队列中有多少消息


我将Kafka 2.10-0.8.2.1与一个Zookeeper实例和三个Kafka实例一起使用,load tester使用的是0.8.2.1 Java API。讨论的主题有三个分区(每个Kafka服务器上一个分区),但是为了测试的目的,只有一个使用者。

我建议查看Kafka中已经提供的工具(如果需要直接调用API,可以在src中获得代码)。特别是,

$ bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group consumer-group1 --zkconnect zkhost:zkport --topic topic1
将向您显示偏移和滞后:

consumer-group1,topic1,0-0 (Group,Topic,BrokerId-PartitionId)
Owner = consumer-group1-consumer1
Consumer offset = 70121994703
= 70,121,994,703 (65.31G)
Log size = 70122018287
= 70,122,018,287 (65.31G)
Consumer lag = 23584
= 23,584 (0.00G)
参考资料:


Kafka公开了几个偏移量(通过JMX),您可以使用这些偏移量来计算消费者有多少延迟(每个主题、每个分区)。这些是最新的偏移量(基本上是Kafka Broker写入新数据的地方)和消费者偏移量(消费者读取数据的地方)。这两者之间的差值被称为消费者滞后,这告诉你实时消费者的落后程度。基于此信息,您还可以导出代理写入速率和消费者读取速率,这在您的卡夫卡监控工具中也很方便了解和查看。有关更多详细信息,请参阅。如果您只需要一个可以绘制一系列卡夫卡指标的工具,请参阅。嗯