千分尺和普罗米修斯计时器作为速率

Posted

技术标签:

【中文标题】千分尺和普罗米修斯计时器作为速率【英文标题】:Micrometer and Prometheus Timer as Rate 【发布时间】:2018-10-30 01:12:17 【问题描述】:

根据 Micrometer 的文档 https://micrometer.io/docs/concepts#_server_side,框架 (Micrometer) 应处理将计时器指标从绝对量转换为速率

下面的代码模拟了一个虚拟计时器:

@Service
public class AppService 
    private Timer timer = Metrics.timer("foobar");

    public String test() 
        timer.record(() -> 
            try 
                Thread.sleep((long) (Math.random() * 1000));
             catch (InterruptedException e) 
                e.printStackTrace();
            
        );
        return "foo";
    

但在 Prometheus 中,我只看到指标 foobar_seconds_sumfoobar_seconds_count 单调递增,而不是将它们视为速率

也许我误解或忽略了文档中的某些内容?

【问题讨论】:

【参考方案1】:

这是 Prometheus Summary 的工作方式,您可以使用以下方法计算平均事件大小:

  rate(foobar_seconds_sum[5m])
/
  rate(foobar_seconds_count[5m])

对于 Prometheus,客户端库是愚蠢的,应该将更复杂的数学运算留给 Prometheus。

【讨论】:

谢谢,这更有意义。这证明我对文档的理解以某种方式被颠倒了。答案已接受

以上是关于千分尺和普罗米修斯计时器作为速率的主要内容,如果未能解决你的问题,请参考以下文章

千分尺相当于普罗米修斯的标签

Quarkus - 将千分尺指标推送到普罗米修斯

用于普罗米修斯的弹簧启动执行器与千分尺混合返回空结果

如何在普罗米修斯中获得速率的分位数

获取将千分尺集成到弹性搜索应用程序的异常

Prometheus:PromQL 减法,相同的标签,不同的值