http_request_duration_seconds_sum / http_request_duration_seconds_count 显示 2 个图表

Posted

技术标签:

【中文标题】http_request_duration_seconds_sum / http_request_duration_seconds_count 显示 2 个图表【英文标题】:http_request_duration_seconds_sum / http_request_duration_seconds_count shows 2 graphs 【发布时间】:2020-03-02 15:27:52 【问题描述】:

我有一个 Grafana 仪表板,我尝试在其中绘制一些 prometheus 指标。

我正在尝试使用以下公式计算 2 个端点的平均响应时间:

http_request_duration_seconds_sum / http_request_duration_seconds_count

但是在将查询绘制到 Grafana 图形面板时,我得到 4 个图形(每个 2 个)而不是只有 2 个,我不明白。

谁能告诉我,为什么有 4 条曲线而不是 2 条曲线? 顶部的两个来自同一个查询,底部的两个也是如此。

更新

正在添加

sum(rate(http_request_duration_sum))[24h] / sum(rate(http_request_duration_count))[24h] 

答案?这给了我 2 条曲线而不是 4 条,但不确定结果是否是我正在寻找的结果(即端点的平均响应时间)。

【问题讨论】:

Prometheus 中默认有 http_request_duration_sum 指标吗?如果没有,哪个出口商提供? 【参考方案1】:

我发现以下查询:

sum(rate(http_request_duration_sum))[24h] / sum(rate(http_request_duration_count))[24h] 

是我正在寻找的答案,以秒为单位提供平均响应时间,并且只有 1 条曲线公关查询。

当然scrape_interval应该是 24 小时,所以我将它设置为 [1m]。 SO-answer

【讨论】:

sum(irate(http_request_duration_sumservice=~"$service"[2m])) by (service) / sum(irate(http_request_duration_countservice=~"$service"[2m]) ) by (服务) 只粘贴一个用于生产的 感谢随文峰。是的,它是一样的,但使用 irate 而不是 rate。在我的情况下,我可能会按(实例)排序,但它仍然给出相同的输出。【参考方案2】:

是的,来自 prometheus 的那些指标是计数器。所以,你应该添加率/愤怒。将 irate 用于不稳定和快速变化的指标

【讨论】:

以上是关于http_request_duration_seconds_sum / http_request_duration_seconds_count 显示 2 个图表的主要内容,如果未能解决你的问题,请参考以下文章