Spring boot 如何使用Spring boot 2中的执行器修改prometheus暴露的度量名称
我使用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桶 有没有更好的办法 附言 我知道我可以用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和
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("_"));
}
});
}
}