有没有办法使用 Java 收集 Kafka 指标?

Is there a way to collect Kafka-metrics using Java?

Kafka 新手

我想知道有没有办法使用 java-api 获取 kafka-metrics。这就是我所说的 kafka-metrics 的意思:

  1. 主题列表
  2. 每个主题分区中的消息数(包括起始偏移量、结束偏移量)
  3. 经纪人名单
  4. 假设我使用0.9消费者API并且我让kafka来管理我的消费者偏移量,每个消费者的偏移量

我意识到,可能只有其中一些可用,并且它们可能通过不同的 类 或方法可用。这就是我为每个要点编号的原因。

KafkaConsumer listTopics() 方法将解决第一个。 KafkaConsumer metrics() 将为您提供该消费者的指标。 KafkaProducer metrics() 将为您提供该生产者的指标。

希望对您有所帮助!

我正在为我的 api 使用 Spring。使用以下代码,您可以通过 java.

获取指标
@Component
public class Receiver {

private static final Logger LOGGER =
          LoggerFactory.getLogger(Receiver.class);


@Autowired
  private KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;

      public void testlag() {
          for (MessageListenerContainer messageListenerContainer : kafkaListenerEndpointRegistry
                    .getListenerContainers()) {
              Map<String, Map<MetricName, ? extends Metric>> metrics = messageListenerContainer.metrics();
              metrics.forEach( (clientid, metricMap) ->{
                  System.out.println("------------------------For client id : "+clientid);
                  metricMap.forEach((metricName,metricValue)->{
                      //if(metricName.name().contains("lag"))
                      System.out.println("------------Metric name: "+metricName.name()+"-----------Metric value: "+metricValue.metricValue());
                  });
              });
                }
      }

}