【问题标题】:Micronaut Micrometer Prometheus common tag configuration is not applying to all metricsMicronaut Micrometer Prometheus 通用标签配置不适用于所有指标
【发布时间】:2022-01-04 09:11:24
【问题描述】:

Spring Boot允许common tags的声明式配置:

Commons 标签适用于所有仪表,并且可以配置为 下面的例子显示:

management.metrics.tags.region=us-east-1

因此,在 Spring Boot 中,使用 management.metrics.tags.application=myapp,所有指标都包含该标签,例如:

jvm_memory_max_bytes{application="myapp",area="heap",id="G1 Survivor Space"} -1.0
system_cpu_count{application="myapp"} 16.0

我想在 Micronaut 应用程序中实现相同的目标。似乎没有一种声明性的方式来做到这一点,相反,我们需要使用MeterRegistryConfigurerprogramatically customize

我创建了以下内容:

@Singleton
@RequiresMetrics
class PrometheusMeterRegistryConfigurer: MeterRegistryConfigurer<MeterRegistry> {

    override fun configure(meterRegistry: MeterRegistry) {
        meterRegistry.config().commonTags("application", "myapp")
    }

    override fun getType(): Class<MeterRegistry> {
        return MeterRegistry::class.java
    }
}

问题在于它没有将其应用于所有指标,一些指标被标记(http_server_requests_seconds_max)而其他指标没有(jvm_memory_max_bytessystem_cpu_count 等):

http_server_requests_seconds_max{application="myapp",exception="none",method="GET",status="200",uri="/actuator/prometheus",} 0.131942121
jvm_memory_max_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 1.22023936E8
system_cpu_count 16.0

如何使标签适用于所有 micrometer-prometheus 指标?

【问题讨论】:

    标签: spring-boot prometheus micronaut micronaut-micrometer


    【解决方案1】:

    解决了添加两个不同的MeterRegistryConfigurers:

    @Singleton
    @RequiresMetrics
    class PrometheusMeterRegistryConfigurer: MeterRegistryConfigurer<PrometheusMeterRegistry> {
    
        override fun configure(meterRegistry: PrometheusMeterRegistry) {
            meterRegistry.config().commonTags("application", "myapp")
        }
    
        override fun getType(): Class<PrometheusMeterRegistry> {
            return PrometheusMeterRegistry::class.java
        }
    
    }
    
    @Singleton
    @RequiresMetrics
    class CompositeMeterRegistryConfigurer: MeterRegistryConfigurer<CompositeMeterRegistry> {
    
        override fun configure(meterRegistry: CompositeMeterRegistry) {
            meterRegistry.config().commonTags("application", "myapp")
        }
    
        override fun getType(): Class<CompositeMeterRegistry> {
            return CompositeMeterRegistry::class.java
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-02
      • 2021-02-02
      • 2021-06-02
      • 2021-05-07
      • 2023-03-26
      • 2021-09-09
      • 2022-08-14
      • 2022-06-21
      相关资源
      最近更新 更多