【问题标题】:Kafka Producer Metrics at regular intervals using Java API使用 Java API 定期检查 Kafka Producer Metrics
【发布时间】:2019-05-08 07:03:20
【问题描述】:

我知道 Kafka API 中可用于生产者指标的 metric() 方法。我实际上正在尝试以以下方式定期获取 10k 记录、100k 等的指标:

我正在使用 Intellij IDE 运行我的生产者,它将产生大约一百万条记录。我尝试按以下方式打印指标:

for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
    System.out.println(entry.getKey().name() + " : " + entry.getValue().metricValue());
}

但是这个方法返回的是生产者的整体指标。

如何使用metrics() 获取特定于间隔的request-raterequest-total 生产者指标?

【问题讨论】:

  • 看来你不能通过metrics来做。可能使用JmxTool 检索百分位数,例如 FiveteenMinuteRate` 等。这是您想要的吗?
  • @amethystic 不,实际上我想要发送 10k 条记录时的生产者指标,再次发送 100k 条记录时等等。我知道metrics() 可用于获取生产者指标,但我不确定如何在特定时间间隔调用它。

标签: java apache-kafka jmx kafka-producer-api


【解决方案1】:

您必须以所需的时间间隔明确检查这些指标的值。

类似(简化逻辑):

Producer<String, String> producer = new KafkaProducer<>(configs);

// Find the metrics you are interested in
Metric requestTotalMetric = null;
for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
    if ("request-total".equals(entry.getKey().name())) {
        requestTotalMetric = entry.getValue();
    }
}

for (int i = 0; i < 1000000000; i++) {
    producer.send(new ProducerRecord<String, String>("topic", "record"));
    // Get metric value at desired interval
    if (i % 100000 == 0) {
        System.out.println(i + " : " + requestTotalMetric.metricValue());
    }
}

【讨论】:

  • 感谢 sn-p。这真的很有帮助!这正是我想要的!
猜你喜欢
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2013-07-22
  • 2015-05-19
  • 2020-05-26
  • 2019-09-04
  • 2021-11-08
  • 1970-01-01
相关资源
最近更新 更多