我正在使用以下代码尝试千分尺。如何配置速率聚合并从应用程序中的给定计数器获取速率聚合数据。速率合计是指先前发布间隔的数据?

final MeterRegistry myRegistry = new SimpleMeterRegistry();
final Random random = new Random();
for (iteration = 0; iteration < 1000; iteration++)
{
    final int randomNum = random.nextInt(10);
    final Counter myCounter = myRegistry.counter("myTestCounter", "random", Integer.toString(randomNum));
    myCounter.increment();
    Thread.sleep(100);
}
System.out.println("measure = [" + myRegistry.counter("myTestCounter", "random", "0").measure());
System.out.println("count = [" + myRegistry.counter("myTestCounter", "random", "0").count());


注意:我不想将度量标准发布到任何监视系统。我想在应用程序本身中跟踪每个间隔给定标签的请求数(例如,给定间隔的成功/失败请求),并将其用于弹性目的。

最佳答案

根据项目作者的评论,Micrometer打算将度量标准导出到像Prometheus这样的外部产品就绪监视系统,因此您的方法有点不寻常。

Micrometer支持不支持速率汇总的监视系统(如InfluxDB)的速率汇总,其支持来自StepMeterRegistry。但是SimpleMeterRegistry并不是其子类之一,因此,如果要坚持使用该方法,则需要创建自己的子类。

更新:

我创建了a sample for a custom StepMeterRegistry

10-04 12:15