全部,
我需要将 Apache Kafka 指标公开给 Spring Boot(v 2.3.0.RELEASE)执行器端点。
请注意,我没有使用 spring-kafka
库。
我正在使用以下库
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.5.0</version>
</dependency>
我已经尝试过这个 spring.jmx.enabled=true
但似乎这不起作用。我认为发生这种情况是因为 spring 没有管理 kafka。
有没有办法可以将这些 JMX 指标绑定(bind)到千分尺 MeterRegistry?
我可以使用 prometheus 提供的 jmx-exporter 来完成这项工作,但由于这需要在不同端口上运行的代理,所以我希望使用默认的 Micrometer 和 spring boot 来完成这项工作。
最佳答案
你试过吗KafkaClientMetrics
, KafkaStreamsMetrics
或KafkaConsumerMetrics
?
KafkaConsumerMetrics
通过 JMX 收集指标,但它已被弃用,取而代之的是 KafkaClientMetrics
。
您只需创建它们并绑定(bind)到您的注册表:
KafkaConsumer<String, String> consumer;
KafkaProducer<String, String> producer;
MeterRegistry registry;
...
new KafkaClientMetrics(consumer).bindTo(registry);
new KafkaClientMetrics(producer).bindTo(registry);
与KafkaStreams
类似:
new KafkaStreamsMetrics(kafkaStreams).bindTo(registry);
如果 Spring 不管理您的 Kafka 组件,为什么您期望 spring.jmx.enabled=true
执行任何操作?
关于spring - Apache Kafka JMX 指标与 Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66793851/