0

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

我想要实现的是,随着时间的推移计算特定对象的调用。

假设我有一个创建某些品牌汽车的功能。然后我想测量一下我在过去一分钟创造了多少福特、斯柯达、大众等。特别是,如果两者之间没有创建斯柯达 now()-1now()那么指标应该返回 0。

文档声明我不应该使用计数器,因为在运行应用程序时创建的汽车数量可以无限增长。而且 Timer 也不是很合适,因为我只会在 Constructor 调用之前和之后启动计时器。

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

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,但是 Micrometer 中的等价物是什么?

4

1 回答 1

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();
        }
    }));
于 2018-08-14T01:41:26.463 回答