我有一个关于 PromQL 及其查询函数rate() 以及如何正确使用它的问题。在我的应用程序中,我有一个线程正在运行,我使用 Micrometer 的计时器来监视线程的运行时间。使用 Timer 可以为您提供一个带有后缀 _count 的计数器和另一个带有后缀 _sum 所花费的秒数总和的计数器。例如 my_metric_sum 和 my_metric_count。
我的原始数据如下所示(抓取间隔 30 s,范围向量 5m):
现在根据文档,https://prometheus.io/docs/prometheus/latest/querying/functions/#rate 计算范围向量中时间序列的每秒平均增长率(此处为 5m)。
现在我的问题是:我为什么想要那个?我的执行运行时间的相对变化对我来说似乎毫无用处。事实上,仅使用 sum/count 看起来更有用,因为它为我提供了每个时刻的平均绝对持续时间。同时,这就是让我困惑的地方,在我找到的文档中
要根据名为 http_request_duration_seconds 的直方图或摘要计算过去 5 分钟内的平均请求持续时间,请使用以下表达式:
速率(http_request_duration_seconds_sum[5m]) / 速率(http_request_duration_seconds_count[5m])
来源: https: //prometheus.io/docs/practices/histograms/
但据我了解文档,这个表达式似乎会计算请求持续时间的每秒平均增长率,即不是请求平均花费多长时间,而是请求持续时间平均改变了多少最后5分钟。