有没有办法使用 Java 收集 Kafka 指标?
Is there a way to collect Kafka-metrics using Java?
Kafka 新手
我想知道有没有办法使用 java-api 获取 kafka-metrics。这就是我所说的 kafka-metrics 的意思:
- 主题列表
- 每个主题分区中的消息数(包括起始偏移量、结束偏移量)
- 经纪人名单
- 假设我使用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());
});
});
}
}
}
Kafka 新手
我想知道有没有办法使用 java-api 获取 kafka-metrics。这就是我所说的 kafka-metrics 的意思:
- 主题列表
- 每个主题分区中的消息数(包括起始偏移量、结束偏移量)
- 经纪人名单
- 假设我使用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());
});
});
}
}
}