В этом случае, поскольку вы используете «встроенную» метрику, вы можете переопределить io.micrometer.core.instrument.binder.MeterBinder#bindTo
, переопределить system.cpu.usage
с помощью пользовательской реализации MeterBinder и определить system.cpu.usage как (вместе с другими, которые вы используете)
Gauge.builder("system.cpu.usage", operatingSystemBean, x -> invoke(systemCpuUsage))
.strongReference(true)//Add strong reference
.tags(tags)
.description("The recent cpu usage for the whole system")
.register(registry);
См., Например, io.micrometer.core.instrument.binder.system.ProcessorMetrics
, который определяет его на данный момент.
Bean-компонент на ProcessorMetrics определен в org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration
, вам также нужно где-то определить свой компонент.(или пометьте @Component)
Если вы не хотите полагаться на какую-то предопределенную метрику с помощью микрометра, например, для захвата какого-то нестандартного размера списка, это то, что вы можете сделать.
private static Map<String, Long> strongRefGauge = new ConcurrentHashMap<>();
Для добавления значений сделайте следующее
registry.gauge("CustomListSizeGuage", getMyCustomGuageTagsFor("myListName"), strongRefGauge, g -> g.get("myListName")).put("myListName", list.size());