我有一个Spring Boot应用程序,现在正在迁移到Micrometer。
我想要实现的是,对特定对象随时间的调用进行计数。
让我们假设我具有创建某些品牌汽车的功能。然后,我想评估一下过去一分钟我创建了多少辆福特,斯柯达,大众汽车。
特别是,如果在now()-1
和now()
之间没有创建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,但是在千分尺中等效的是什么?
答案 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();
}
}));