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

如何在Spring Boot 2中通过Actuator修改Prometheus暴露的指标名称

调整Spring Boot Actuator Prometheus指标名称的方案

嘿,这个需求我之前折腾过,完全可以借助Micrometer的自定义命名策略来实现,不用动太多底层代码,咱们一步步来:

1. 自定义Meter命名规则

Micrometer负责把Spring Boot的指标转换成Prometheus格式,咱们可以通过实现MeterNamingConvention接口,重写指标名称的生成逻辑,精准修改你想要调整的那些指标:

import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.prometheus.PrometheusNamingConvention;

public class CustomPrometheusNamingConvention extends PrometheusNamingConvention {

    private static final String HTTP_REQUESTS_PREFIX = "http_server_requests_seconds";

    @Override
    public String name(String name, Meter.Type type, String baseUnit) {
        // 先调用父类的默认处理,保证其他指标不受影响
        String originalName = super.name(name, type, baseUnit);
        
        // 针对http_server_requests相关指标做自定义替换
        if (originalName.startsWith(HTTP_REQUESTS_PREFIX)) {
            String suffix = originalName.substring(HTTP_REQUESTS_PREFIX.length());
            switch (suffix) {
                case "_count":
                    return "http_server_requests_count";
                case "_max":
                    return "latency_seconds_max";
                case "_sum":
                    return "latency_seconds_sum";
                default:
                    // 其他后缀比如_bucket之类的,保持原名称或者按你需求修改
                    return originalName;
            }
        }
        
        // 其他指标保持默认命名
        return originalName;
    }
}

2. 注册自定义命名规则到Spring容器

接下来需要把咱们自定义的命名规则注册成Bean,替换掉默认的Prometheus命名策略:

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

@Configuration
public class MicrometerConfig {

    @Bean
    public NamingConvention prometheusNamingConvention() {
        return new CustomPrometheusNamingConvention();
    }
}

3. 验证效果

启动你的Spring Boot应用,访问/actuator/prometheus端点,就能看到指标名称已经按你的要求修改了:

  • 原来的http_server_requests_seconds_count变成http_server_requests_count
  • 原来的http_server_requests_seconds_max变成latency_seconds_max
  • 原来的http_server_requests_seconds_sum变成latency_seconds_sum

如果还有其他需要调整的指标,只需要在CustomPrometheusNamingConvention的name方法里添加对应的判断逻辑就行,灵活得很。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:35:39