如何从 Kafka 中的消费者访问特定指标

How to access a specific metric from a consumer in Kafka

我正在与 java 生产者和消费者合作,我试图从我的 java 应用程序中可视化我的消费者滞后(我故意滞后)。我想将该延迟记录为标准输出。我曾尝试使用 JMX,但无法在 java 应用程序中使用它。 我用过这个(只是一个片段,消费者的设置是在应用程序中完成的)

private KafkaConsumer<String, String> consumer

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

但它只给我指标的描述,而不是价值。 我在我的 Kafka CLI 中看到它显示了该消费者的正确延迟。

首先使用 docs 或打印您问题中的所有指标来确定您感兴趣的指标。

然后从消费者那里找到指标。例如,如果您对 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()