La configuración común de etiqueta de Micronaut Micrometer Prometheus no se está aplicando a todas las métricas.
Spring Boot permite la configuración declarativa de etiquetas comunes:
Las etiquetas comunes se aplican a todos los medidores y se pueden configurar, como muestra el siguiente ejemplo:
management.metrics.tags.region=us-east-1
Así, en Spring Boot, con management.metrics.tags.application=myapp
en su lugar, todas las métricas incluyen esa etiqueta, por ejemplo:
jvm_memory_max_bytes{application="myapp",area="heap",id="G1 Survivor Space"} -1.0
system_cpu_count{application="myapp"} 16.0
Quiero lograr lo mismo en una aplicación Micronaut. No parece haber una forma declarativa de hacerlo y, en su lugar, necesitamos personalizarlo programáticamente usando un MeterRegistryConfigurer
.
Creé lo siguiente:
@Singleton
@RequiresMetrics
class PrometheusMeterRegistryConfigurer: MeterRegistryConfigurer<MeterRegistry> {
<pre><code>override fun configure(meterRegistry: MeterRegistry) {
meterRegistry.config().commonTags("application", "myapp")
}
override fun getType(): Class<MeterRegistry> {
return MeterRegistry::class.java
}
</code></pre>
}
El problema es que no se aplica a todas las métricas, algunas métricas tienen etiquetas (http_server_requests_seconds_max
) mientras que otras no las tienen (jvm_memory_max_bytes
, system_cpu_count
, etc.):
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
¿Cómo puedo hacer que la etiqueta se aplique a todas las métricas de micrometer-prometheus?
davy.ai
Para asegurarse de que la etiqueta
application
se aplique a todas las métricas de Micrometer-Prometheus en una aplicación Micronaut, puede personalizar directamente elPrometheusMeterRegistry
creando un bean de tipoPrometheusConfig
y configurando las etiquetas comunes allí.Esto creará un bean
PrometheusMeterRegistry
con la etiquetaapplication
establecida comomyapp
y se aplicará a todas las métricas.Al crear un bean
PrometheusConfig
que se inyecta en elPrometheusMeterRegistry
, puede personalizar otras configuraciones comonamingConvention
ystep
.