Метрики Kafka Producer через регулярные промежутки времени с использованием Java API - PullRequest
1 голос
/ 08 мая 2019

Мне известен метод metric(), доступный в Kafka API для метрик производителя. Я на самом деле пытаюсь получить метрики через регулярные промежутки времени для записей 10k, 100k и так далее следующим образом:

enter image description here

Я управляю моим продюсером из Intellij IDE, который выпустит около миллиона записей. Я попытался напечатать метрики следующим образом:

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

Но этот метод возвращает общие метрики производителя.

Как я могу получить специфичные для интервала request-rate & request-total метрики производителя, используя metrics()?

1 Ответ

2 голосов
/ 08 мая 2019

Вы должны явно проверить значение этих метрик через желаемые интервалы.

Что-то вроде (упрощенная логика):

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());
    }
}
...