【问题标题】:How to monitor application processing of Kafka messages for load testing如何监控 Kafka 消息的应用程序处理以进行负载测试
【发布时间】:2015-10-13 19:39:52
【问题描述】:

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

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

我需要调用哪些 API 才能了解应用程序当前在队列中的哪个位置,以及该位置后面的队列中有多少消息?

我使用 Kafka 2.10-0.8.2.1 和一个 Zookeeper 实例和三个 Kafka 实例,负载测试器使用 0.8.2.1 Java API。有问题的主题有三个分区(每个 Kafka 服务器上一个),但是出于测试目的,只有一个消费者。

【问题讨论】:

    标签: java apache-zookeeper apache-kafka


    【解决方案1】:

    我建议查看 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)
    

    参考资料:

    【讨论】:

      【解决方案2】:

      Kafka 公开了几个偏移量(通过 JMX),您可以使用它们来计算延迟消费者有多少(每个主题,每个分区)。它们是最新偏移量(基本上是 Kafka Broker 写入新数据的位置)和消费者偏移量(消费者读取数据的位置)。这两者之间的差异被称为消费者滞后,它告诉你实时消费者落后了多远。基于此信息,您还可以得出代理写入率和消费者读取率,这也很容易在您的 Kafka 监控工具中了解和查看。有关详细信息,请参阅Kafka Consumer Lag Monitoring。如果您只想要一个可以绘制大量 Kafka 指标的工具,请参阅SPM for Kafka monitoring。 HTH。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-21
        • 2019-02-15
        • 1970-01-01
        • 1970-01-01
        • 2021-05-20
        • 2017-10-18
        • 2020-03-17
        • 2018-12-18
        相关资源
        最近更新 更多