Пружинный привод 2 метрика от пользовательской функции - PullRequest
0 голосов
/ 16 февраля 2020

Я нахожусь в мире spring-boot-actuator ...

Как мне добавить свои метрики , поступающие из пользовательской функции из моей @Service class ?

Я ожидал бы что-то вроде

meterRegistry.registerNewGauge(
    "animals_count",
    "cats",
    animalCounterService::countCatsFromDatabase
);

В настоящее время я могу найти только простые метрики, такие как

meterRegistry.counter("animals_count").increment();

, но это не так Это не сильно помогает, когда мне приходится собирать такие вещи, как записи в базе данных. Мне нужен более гибкий. Я также нашел что-то вроде MeterBinder.bindTo, но это не сработало. Нет ошибок, ничего в метриках. Я ищу уже несколько месяцев безуспешно.

спасибо

1 Ответ

1 голос
/ 17 февраля 2020

Я предполагаю, что вы используете Микрометр для метрик, верно?

Если это так, вы можете создать датчик и привязать его к любому объекту, который предоставляет метод, который возвращает двойной тип, например:

@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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...