Spring boot 如何使用Spring boot 2中的执行器修改prometheus暴露的度量名称

Spring boot 如何使用Spring boot 2中的执行器修改prometheus暴露的度量名称,spring-boot,prometheus,spring-boot-actuator,Spring Boot,Prometheus,Spring Boot Actuator,我使用springboot 2中的Actuator来公开/Actuator/prometheus端点,prometheus实例将从中提取度量 除了我需要调整度量名称之外,所有的工作都很完美。我的意思不是对普罗米修斯有意义的后缀(_count,_total,_bucket,…),而是类似于: http\u服务器\u请求\u秒数\u计数->http\u服务器\u请求\u计数 http\u服务器\u请求\u秒\u最大值->延迟\u秒\u最大值 http\u服务器\u请求\u秒\u和->延迟\u秒\u和

我使用springboot 2中的Actuator来公开/Actuator/prometheus端点,prometheus实例将从中提取度量

除了我需要调整度量名称之外,所有的工作都很完美。我的意思不是对普罗米修斯有意义的后缀(_count,_total,_bucket,…),而是类似于:

http\u服务器\u请求\u秒数\u计数->http\u服务器\u请求\u计数 http\u服务器\u请求\u秒\u最大值->延迟\u秒\u最大值 http\u服务器\u请求\u秒\u和->延迟\u秒\u和 http\u服务器\u请求\u秒\u桶->延迟\u秒\u桶

有没有更好的办法

附言

我知道我可以用

management.metrics.web.server.requests-metric-name=different
得到

different_seconds_count
different_seconds_max 
different_seconds_sum 
different_seconds_bucket
但很难做到:

1º删除_秒后缀

2º仅为其中一个使用不同的基本名称


我猜我可以编写一个替代的
PrometheusRenameFilter
,但不确定如何将其配置为默认注册表。

现在我知道如何自定义全局注册表:

e、 g.设置自定义仪表过滤器:

@Configuration
public class MetricsConfig {
    @Bean
    MeterRegistryCustomizer<MeterRegistry> metricsConfig() {
        return registry -> registry.config().meterFilter(new CustomRenameFilter());
    }
}

使用这些特定名称,因此以我想要的方式调整组件可能不正确,因为这将是一个不同的组件。

您可以覆盖此方法并更新命名约定:

@Configuration
public class MetricsConfiga {
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(String applicationName) {
    return (registry) -> registry.config().namingConvention(new NamingConvention() {
        @Override
        public String name(String name, Meter.Type type, String baseUnit) {
            return "PREFIX" + Arrays.stream(name1.split("\\."))
                .filter(Objects::nonNull)
                .collect(Collectors.joining("_"));
        }
       });
    }
}
@配置
公共类MetricsConfiga{
@豆子
MeterRegistryCustomizer配置器(字符串应用程序名称){
return(registry)->registry.config().namingConvention(新的namingConvention()){
@凌驾
公共字符串名称(字符串名称、仪表类型、字符串基本单位){
返回“PREFIX”+Arrays.stream(name1.split(“\\”))
.filter(对象::非空)
.collect(collector.joining(“”));
}
});
}
}
@Configuration
public class MetricsConfiga {
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(String applicationName) {
    return (registry) -> registry.config().namingConvention(new NamingConvention() {
        @Override
        public String name(String name, Meter.Type type, String baseUnit) {
            return "PREFIX" + Arrays.stream(name1.split("\\."))
                .filter(Objects::nonNull)
                .collect(Collectors.joining("_"));
        }
       });
    }
}