Я пытаюсь получить какие-то метрики (клиентское отставание, ...) от Кафки, чтобы предоставить его для использования Прометей.
Мой подход состоит в том, чтобы написать простое приложение Springboot, которое предоставляет метрики для прометея.Я понимаю, что kafka предоставляет метрики всем своим потребителям через интерфейс MetricsReporter.
Итак, я реализовал класс, который должен делать именно это:
public class MonitoringIntegration implements MetricsReporter {
@Override
public void init(List<KafkaMetric> list) {
System.out.println("init");
for (KafkaMetric kafkaMetric : list) {
System.out.println(kafkaMetric.metricName());
System.out.println(kafkaMetric.metricValue());
}
}
@Override
public void metricChange(KafkaMetric kafkaMetric) {
System.out.println("Metric Change");
System.out.println(kafkaMetric.metricName());
System.out.println(kafkaMetric.metricValue());
}
@Override
public void metricRemoval(KafkaMetric kafkaMetric) {
System.out.println("Removal");
System.out.println(kafkaMetric.metricName());
System.out.println(kafkaMetric.metricValue());
}
@Override
public void close() {
System.out.println("close");
}
@Override
public void configure(Map<String, ?> map) {
System.out.println("Configuring");
System.out.println(map);
}
}
Я зарегистрировал этот класс с помощью bean-компонента:
@Configuration
public class MetricConfiguration {
@Bean
public ProducerFactory<?, ?> kafkaProducerFactory(KafkaProperties properties) {
Map<String, Object> producerProperties = properties.buildProducerProperties();
producerProperties.put(CommonClientConfigs.METRIC_REPORTER_CLASSES_CONFIG,
MonitoringIntegration.class.getName());
return new DefaultKafkaProducerFactory<>(producerProperties);
}
@Bean
public ConsumerFactory<?, ?> kafkaConsumerFactory(KafkaProperties properties) {
Map<String, Object> consumererProperties = properties.buildConsumerProperties();
consumererProperties.put(CommonClientConfigs.METRIC_REPORTER_CLASSES_CONFIG,
MonitoringIntegration.class.getName());
return new DefaultKafkaConsumerFactory<>(consumererProperties);
}
}
Когда я запускаю приложение, некоторые показателибудет распечатан в cmd, но у них есть все значения по умолчанию (0.0, бесконечно, ..), и они будут предоставлены только один раз после запуска приложения.
Почему я не получаю метрики?Что я сделал не так?
Ура,
Фабиан