引用普罗米修斯计数和观察总和文档:
要根据名为 http_request_duration_seconds 的直方图或摘要计算过去 5 分钟内的平均请求持续时间,请使用以下表达式:
rate(http_request_duration_seconds_sum[5m]) / rate(http_request_duration_seconds_count[5m])
我应该提到我的理解:
rate功能然而,我对请求持续时间的增长率不感兴趣,而是对请求持续时间本身感兴趣!
有人可以解释为什么每个人在任何给定时刻寻找平均计数/值时都必须使用一个rate函数,而它没有提供这个功能?
PS,似乎有一个重复的问题,并且有一个已检查的答案,但是其中的所有答案都解释了rate函数是什么,它如何执行它的操作等等。我已经了解函数的rate作用。我只是不明白为什么我们应该首先使用它,特别是当它提供的结果与我们正在寻找的结果无关时。
让我们展示一下 Prometheus 手册中引用的公式,利用名为 的函数rate()计算您正在寻找的确切值。
根据计数器的工作方式,我们知道每次指定的计数器http_request_duration_seconds_sum都会考虑一个新值,即自上次发生的所有请求的持续时间之和,它会将这个总和添加到其先前的值。因此,rate(http_request_duration_seconds_sum[5m])是 5 分钟内发生的请求的持续时间总和除以 5 分钟。
每次计数器http_request_duration_seconds_count考虑到一个新值(即自上次以来发生的请求数)时,该计数器都会将此请求数添加到其先前的值中。因此,rate(http_request_duration_seconds_count[5m])是 5 分钟内发生的请求数除以 5 分钟。
因此,让我们将前两段中发现的公式注入到以下分数中:
等于:
您可以通过删除 来简化此公式5 minutes,因为它出现在分子和分母中。
最后得出如下公式:
等于以下一项:
该等式的第二部分是您要计算的值:5 分钟内请求的平均持续时间。这就是为什么它是使用这个等式的第一部分来计算的。