【发布时间】: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 应用程序中实现相同的目标。似乎没有一种声明性的方式来做到这一点,相反,我们需要使用MeterRegistryConfigurer 来programatically 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_bytes、system_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