You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.1.1中Kafka Producer指标未在Prometheus显示的问题

解决Spring Boot 3.1.1中KafkaTemplate的Prometheus详细指标缺失问题

你遇到的问题核心是:当前通过MicrometerProducerListener获取的只是Spring Kafka层面的基础发送指标,而kafka_producer_request_latency_avg、kafka_producer_record_retry_total这类指标是Kafka客户端原生通过Micrometer暴露的指标,需要单独配置开启,和是否使用Reactive模板无关。

下面是具体的解决步骤:

1. 引入Micrometer-Kafka集成依赖

首先确保项目中包含micrometer-kafka依赖,这个包提供了Kafka客户端和Micrometer的桥接:

<!-- Maven -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-kafka</artifactId>
    <version>1.11.0</version> <!-- 版本需与Spring Boot 3.1.1对应的Micrometer版本匹配(1.11.x) -->
</dependency>
// Gradle
implementation 'io.micrometer:micrometer-kafka:1.11.0'

2. 配置Kafka客户端启用Micrometer指标

有两种方式开启Kafka客户端的指标上报:

方式一:在代码中配置Producer属性

修改你创建DefaultKafkaProducerFactory的代码,添加Kafka客户端的指标上报配置:

@Autowired
private MeterRegistry meterRegistry;

@Bean
public KafkaTemplate<String, StatusEvent> statusEventKafkaTemplate(KafkaConfig kafkaConfig) {
  var config = kafkaConfig.buildProducerProperties();
  // 启用Micrometer指标上报
  config.put(ProducerConfig.METRIC_REPORTER_CLASSES_CONFIG, "io.micrometer.kafka.MicrometerProducerMetricsReporter");
  // 将应用的MeterRegistry传递给Kafka客户端
  config.put("micrometer.meter.registry", meterRegistry);
  
  var factory = new DefaultKafkaProducerFactory<String, StatusEvent>(config);
  // 保留原有Spring Kafka的指标监听(可选,若不需要可移除)
  factory.addListener(new MicrometerProducerListener<>(meterRegistry));
  return new KafkaTemplate<>(factory);
}

方式二:通过配置文件启用

在kafka-properties.yaml中添加Kafka客户端的全局配置:

spring:
    kafka:
        bootstrap-servers: [...]
        security:
            protocol: SASL_SSL
        properties:
            sasl:
                mechanism: PLAIN
                jaas:
                    config: [...]
            producers:
                client-id: [...]
                acks: all
            # 新增:启用Micrometer指标上报
            metric.reporters: io.micrometer.kafka.MicrometerProducerMetricsReporter

Spring Boot会自动将容器中的MeterRegistry注入到Kafka客户端,无需手动传递。

3. 验证指标

启动应用后,访问/actuator/prometheus端点,就能看到kafka_producer_前缀的全量指标,包括请求延迟、重试次数、消息发送成功率等。

补充说明

ReactiveKafkaProducerTemplate默认会自动启用Kafka客户端的原生Micrometer指标,所以另一个项目中能看到全量指标;而普通KafkaTemplate需要手动配置开启上述步骤,无需切换到Reactor实现。

内容的提问来源于stack exchange,提问作者Aisteru Firë

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:10:25