有没有办法使用Java收集Kafka-metrics?

时间:2016-01-28 16:55:55

标签: java apache-kafka kafka-consumer-api

卡夫卡新手

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

  1. 主题列表
  2. 每个主题分区中的消息数(包括起始偏移量,结束偏移量)
  3. 经纪人名单
  4. 假设我使用0.9消费者API,我让kafka管理我的消费者抵消,每个消费者的抵消
  5. 我意识到,有可能只有其中一些可用,并且它们可能通过不同的类或方法提供。这就是我为每个子弹点编号的原因。

2 个答案:

答案 0 :(得分:1)

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

我希望它有所帮助!

答案 1 :(得分:1)

I am using Spring for my api. Using the below code, you can get the metrics via 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());
                  });
              });
                }
      }

}