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

Spring Boot 3集成Micrometer、Zipkin、Prometheus时Prometheus报错:不支持exemplars

问题分析与解决方案

问题原因

Spring Boot 3.x 版本中,Micrometer Tracing 结合 Brave 时,默认会为计数器类型(count)的指标自动添加 Exemplar(关联 traceId 的元数据),但 Prometheus 的计数器指标原生不支持 Exemplars——仅直方图(histogram)和摘要(summary)类型支持,这就导致了http_server_requests_seconds_count这个计数器指标触发了不支持 Exemplar 的错误。而 Spring Boot 2.x 中不存在这个默认行为,移除 Zipkin/Brave 依赖后,Exemplar 自动生成逻辑被关闭,因此恢复正常。

解决方案

1. 过滤特定指标的 Exemplar 生成

通过配置直接禁止计数器类型指标生成 Exemplar,在application.yml或application.properties中添加:

management:
  metrics:
    export:
      prometheus:
        exemplars:
          filter:
            enabled: true
            # 排除所有count结尾的计数器指标
            patterns: "!*_count"
            # 或者精准排除报错的指标:"!http_server_requests_seconds_count"

这个配置会让 Prometheus 导出器跳过所有计数器类型的 Exemplar 生成,仅为支持的直方图/摘要指标保留 Exemplar。

2. 调整 Tracing 配置,仅为支持的指标类型生成 Exemplar

自定义ExemplarSampler,只允许直方图和摘要类型的指标生成 Exemplar:

import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.MeterFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TracingConfig {

    @Bean
    public MeterFilter exemplarFilter() {
        return new MeterFilter() {
            @Override
            public Meter.Id map(Meter.Id id) {
                // 仅为直方图和摘要类型保留Exemplar支持
                if (id.getType() == Meter.Type.COUNTER) {
                    return id.withExemplarSampler(null);
                }
                return id;
            }
        };
    }
}

3. 对齐依赖版本兼容性

Spring Boot 3.2.x 对应的 Micrometer Tracing 版本应为 1.3.x(而非当前使用的 1.2.1),升级依赖版本可能修复这个默认行为的问题:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
    <version>1.3.1</version>
</dependency>

注:建议通过 Spring Boot Starter 的依赖 bom 管理版本,避免手动指定版本号引发兼容性问题。

内容的提问来源于stack exchange,提问作者AnnKont

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:25:04