【问题标题】:Spring boot actuator 2 metrics from custom function来自自定义函数的 Spring Boot actuator 2 指标
【发布时间】:2020-02-16 17:39:16
【问题描述】:

我在spring-boot-actuator世界割草...

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

我希望有类似的东西

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

目前我只能找到简单的指标,例如

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

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

谢谢

【问题讨论】:

    标签: metrics spring-boot-actuator


    【解决方案1】:

    我假设您使用 Micrometer 作为指标,对吗?

    如果是这样,您可以创建一个仪表并将其绑定到任何提供返回 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
    }
    

    【讨论】:

    • 这很好用 :) 对我来说,度量标准不再有任何价值,你必须自己去每个 /metrics/metric-name 所以我启用了 /prometheus 但在那里不是我的自定义指标。你知道我如何将这些迁移到 /prometheus 吗?
    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2018-10-28
    • 2015-02-22
    • 2023-03-10
    • 2019-02-08
    • 1970-01-01
    相关资源
    最近更新 更多