有没有一种使用Java收集卡夫卡指标的方法?

有没有一种使用Java收集卡夫卡指标的方法?,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,卡夫卡新人 我想知道是否有一种方法可以使用JavaAPI获取卡夫卡指标。以下是我所说的卡夫卡指标: 主题列表 每个主题分区中的邮件数(包括开始偏移量、结束偏移量) 经纪人名单 假设我使用0.9消费者API,让kafka管理我的消费者补偿,每个消费者的补偿 我意识到,可能只有其中一些是可用的,它们可能通过不同的类或方法可用。这就是为什么我对每个要点进行编号。KafkaConsumerlistTopics()方法将解决第一个问题。 KafkaConsumermetrics()将为您提供该消费者的指标

卡夫卡新人

我想知道是否有一种方法可以使用JavaAPI获取卡夫卡指标。以下是我所说的卡夫卡指标:

  • 主题列表
  • 每个主题分区中的邮件数(包括开始偏移量、结束偏移量)
  • 经纪人名单
  • 假设我使用0.9消费者API,让kafka管理我的消费者补偿,每个消费者的补偿

  • 我意识到,可能只有其中一些是可用的,它们可能通过不同的类或方法可用。这就是为什么我对每个要点进行编号。

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


    我希望有帮助

    我正在使用Spring作为我的api。使用下面的代码,您可以通过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());
                      });
                  });
                    }
          }
    
    }
    
    @组件
    公共类接收器{
    专用静态最终记录器=
    LoggerFactory.getLogger(Receiver.class);
    @自动连线
    私有KafkaListenerEndpointRegistry KafkaListenerEndpointRegistry;
    公共void testlag(){
    对于(MessageListenerContainer MessageListenerContainer:kafkaListenerEndpointRegistry)
    .getListenerContainers()){
    Map metrics=messageListenerContainer.metrics();
    metrics.forEach((clientid,metricMap)->{
    System.out.println(“---------------------------用于客户端id:”+clientid);
    metricMap.forEach((metricName,metricValue)->{
    //if(metricName.name()包含(“滞后”))
    System.out.println(“------------度量名称:“+metricName.name()+”------------度量值:“+metricValue.metricValue()”);
    });
    });
    }
    }
    }
    
    hba,我的回答对您有帮助吗?你能接受吗?嗨,我知道我是在评论这个小老帖子。调用指标是否需要任何其他更改?如何调用testlag方法?短暂性脑缺血发作