卡夫卡新手
我想知道有没有办法使用java-api获取kafka-metrics。这就是我所说的kafka-metrics:
我意识到,有可能只有其中一些可用,并且它们可能通过不同的类或方法提供。这就是我为每个子弹点编号的原因。
答案 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());
});
});
}
}
}