Я предполагаю, что вы используете Микрометр для метрик, верно?
Если это так, вы можете создать датчик и привязать его к любому объекту, который предоставляет метод, который возвращает двойной тип, например:
@Service
public class MyService {
...
public double calculateValueForGauge() {...}
}
MyService service = ...// get from spring
MeterRegistry registry = ... // get from spring
// here is how you can create a gauge and bind it to an arbitrary method of your service
Gauge.builder("some.name.goes.here, service, (service) -> service.calculateValueForGauge())
.register(registry);
Например, вы можете поместить код регистрации датчика в слушатель, который будет вызываться при запуске контекста приложения:
@EventListener
public void onApplicationStarted(ApplicationReadyEvent event) {
// register gauges here
}