如何使用千分尺测量随时间变化的调用

时间:2018-07-16 11:43:12

标签: spring-boot micrometer

我有一个Spring Boot应用程序,现在正在迁移到Micrometer。

我想要实现的是,对特定对象随时间的调用进行计数。

让我们假设我具有创建某些品牌汽车的功能。然后,我想评估一下过去一分钟我创建了多少辆福特,斯柯达,大众汽车。 特别是,如果在now()-1now()之间没有创建Skoda,则该指标应返回0。

文档指出我不应该使用计数器,因为在运行应用程序时,创建的汽车数量可以无限期地增长。另外,Timer不太适合,因为我只会在构造函数调用之前和之后启动计时器。

我尝试了一个量规,但这也只能给我绝对数字:

Arrays.stream(brand).forEach(brand -> metricNames.stream().forEach(name -> {
      String id = METRIC_PREFIX + METRIC_SEPARATOR + brand + name;
      AtomicInteger summary = Metrics.gauge(id, new AtomicInteger(0));
      summary.getAndIncrement();
    }));

在dropwizard中,有Meters,但是在千分尺中等效的是什么?

1 个答案:

答案 0 :(得分:0)

您需要一个柜台:

    MeterRegistry metrics...

    private final Counter nikeBrandCounter = metrics.counter("brands", "brand", "Nike");

    Arrays.stream(brand).forEach(brand -> metricNames.stream().forEach(name -> {
        if(name == "Nike") {
            nikeBrandCounter.increment();
        }
    }));