Spring 来自自定义函数的引导执行器 2 指标

Spring boot actuator 2 metrics from custom function

我在spring-boot-actuator世界里...

如何添加我自己的 指标 来自 来自自定义函数 来自我的 @Service class?

我希望有类似

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

目前我只能找到像

这样简单的指标
meterRegistry.counter("animals_count").increment();

但是当我必须聚合诸如数据库条目之类的东西时,这并没有多大帮助。我需要一个更灵活的。 我还发现了类似 MeterBinder.bindTo 的内容,但没有用。没有错误,指标中没有任何内容。 我现在搜索了几个月都没有成功。

谢谢

我假设您正在使用 Micrometer 进行度量,对吗?

如果是这样,您可以创建一个仪表并将其绑定到任何提供 returns double 方法的对象,如下所示:

@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
}