如何在 Spring-boot 2 中使用 Actuator 修改 prometheus 公开的指标名称

Raf*_*ael 5 spring-boot spring-boot-actuator prometheus

我在 springboot 2 中使用 Actuator 来公开 /actuator/prometheus 端点,prometheus 实例将从该端点提取指标。

\n\n

一切都很完美,除了因为我需要调整指标名称。我的意思不是对 Prometheus 有意义的后缀(_count、_total、_bucket,...),而是类似:

\n\n
\n

http_server_requests_seconds_count -> http_server_requests_count\n http_server_requests_seconds_max -> Latency_Seconds_Max\n http_server_requests_Seconds_sum -> Latency_Seconds_sum\n http_Server_requests_Seconds_Bucket -> Latency_Seconds_Bucket

\n
\n\n

对此有更好的方法吗?

\n\n

聚苯乙烯

\n\n

我知道我可以使用

\n\n
management.metrics.web.server.requests-metric-name=different\n
Run Code Online (Sandbox Code Playgroud)\n\n

要得到

\n\n
different_seconds_count\ndifferent_seconds_max \ndifferent_seconds_sum \ndifferent_seconds_bucket\n
Run Code Online (Sandbox Code Playgroud)\n\n

但很难:

\n\n

1\xc2\xba 去掉_seconds后缀

\n\n

2\xc2\xba 仅对其中之一使用不同的基本名称

\n\n

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

\n

Raf*_*ael 2

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

例如设置自定义仪表过滤器:

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

但是,在注册表中设置自定义重命名过滤器仅允许重命名基本指标名称。它不会作用于后缀,也不允许作用于属于一组(例如由摘要生成)的特定度量。

通过自定义,NamingConvention我可以向约定基本名称添加后缀...我什至可以更改现有后缀或替换约定基本名称。

最后请注意,直方图普罗米修斯指标类型需要创建

<basename>_bucket
<basename>_sum
<basename>_count
Run Code Online (Sandbox Code Playgroud)

具有这些特定名称,因此按照我想要的方式调整组件可能是不正确的,因为那将是一个不同的组件。