Как получить доступ к определенной метрике от потребителя в Кафке - PullRequest
1 голос
/ 08 октября 2019

Я работаю с Java-производителем и потребителем, я пытаюсь визуализировать свое потребительское отставание (у меня оно отстает в цели) из моего Java-приложения. Я хочу записать это отставание как стандартный вывод. Я пытался использовать JMX, но я не смог использовать его в приложении Java. Я использовал это (просто фрагмент, настройка потребителя выполняется в приложении)

private KafkaConsumer<String, String> consumer

Map<MetricName, ? extends Metric> metrics = consumer.metrics();
System.out.println(metrics);

Но это только дает мне описание метрик, но не значение. Я вижу в своем Kafka CLI, и он показывает правильное отставание для этого потребителя.

1 Ответ

0 голосов
/ 08 октября 2019

Сначала определите, какие метрики вам интересны, используя документы или распечатав все метрики, как в вашем вопросе.

Затем найдите метрики от потребителя. Например, если вас интересует request-latency-avg:

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

Тогда вы можете получить значение, когда вам это нужно, используя:

requestLatencyAvgMetric.metricValue()
...