spring - Apache Kafka JMX 指标与 Spring Boot

标签 spring spring-boot apache-kafka micrometer spring-micrometer

全部,

我需要将 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 , KafkaStreamsMetricsKafkaConsumerMetricsKafkaConsumerMetrics 通过 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/

相关文章:

java - hibernate4.LocalSessionFactoryBean 无法转换为 org.hibernate.cfg.Configuration

java - Tomcat : Required request part 'file' is not present

java - Kafka 重试配置和性能影响

java - 无法找到处理 Spring Kafka 恢复的正确方法

java - Spring @KafkaListener 和并发

docker - 如何使用融合的Docker镜像设置Kafka集群

java - 即使没有可用的 SessionFactory 实例,Spring @Autowired 如何绑定(bind) SessionFactory 对象

java - 获取 Spring Security ACL 查找以使用 mysql 只读副本

spring - 兼容版本 spring cloud、r2dbc

Spring Boot/Spring Data import.sql 不运行 Spring-Boot-1.0.0.RC1