使用 Spring 引导的 Apache Kafka JMX 指标

Apache Kafka JMX Metrics with Spring Boot

全部,

我需要将 Apache Kafka 指标公开给 spring 引导 (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 指标绑定到测微计 MeterRegistry?

我可以使用 prometheus 提供的 jmx-exporter 来完成这项工作,但由于这需要在不同端口上使用代理 运行,我希望使用默认的 Micrometer 和 spring开机。

你试过KafkaClientMetrics, KafkaStreamsMetrics or KafkaConsumerMetrics了吗? KafkaConsumerMetrics 通过 JMX 收集指标,但已弃用 KafkaClientMetrics

您只需要创建它们并绑定到您的注册表:

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 做任何事情?