http_request_duration_seconds_sum / http_request_duration_seconds_count 显示 2 个图表
http_request_duration_seconds_sum / http_request_duration_seconds_count shows 2 graphs
我有一个 Grafana 仪表板,我尝试在其中绘制一些普罗米修斯指标。
我正在尝试使用以下公式计算 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 条曲线,但不确定结果是否是我正在寻找的结果(是端点的平均响应时间)。
我发现以下查询:
sum(rate(http_request_duration_sum))[24h] / sum(rate(http_request_duration_count))[24h]
是我正在寻找的答案,以秒为单位给我平均响应时间,并且只有 1 条曲线 pr 查询。
当然 scrape_interval 应该 而不是 是 24 小时,所以我将其设置为 [1m]。 <- 根据这个
是的,那些来自普罗米修斯的指标是计数器。因此,您应该添加 rate/irate。对不稳定和快速变化的指标使用 irate
http_request_duration_sum
和 http_request_duration_count
是 counter type 的指标,因此它们通常会随着时间的推移而增加,有时可能会重置为零(例如,当公开这些指标的服务,重新启动):
http_request_duration_sum
指标显示自上次服务重启以来所有请求持续时间的总和。
http_request_duration_count
指标显示自上次服务重启以来的请求总数。
所以http_request_duration_sum / http_request_duration_count
给出了自服务启动以来的平均请求持续时间。这个指标没有用,因为它平滑了可能的请求持续时间峰值,并且平滑因子会随着时间的推移而增加。通常人们希望看到过去 N
分钟内的平均请求持续时间。这可以通过将计数器包装到 increase() 函数中来计算,并在方括号中包含所需的回顾持续时间。例如,以下查询 returns 最近 5 分钟的平均请求持续时间(请参阅方括号中的 5m
):
increase(http_request_duration_sum[5m]) / increase(http_request_duration_count[5m])
如果 http_request_duration
指标在多个应用程序(又名作业)或节点(又名实例或抓取目标)上公开,则此查询可能 return 多个时间序列。如果您需要获取每个作业最近 5 分钟的平均请求持续时间,则必须使用 sum 函数:
sum(increase(http_request_duration_sum[5m])) by (job)
/
sum(increase(http_request_duration_count[5m])) by (job)
请注意,sum(...) by (job)
分别应用于 /
的左侧和右侧部分。这不等同于以下 不正确的 查询:
sum(
increase(http_request_duration_sum[5m]) / increase(http_request_duration_count[5m])
) by (job)
avg(
increase(http_request_duration_sum[5m]) / increase(http_request_duration_count[5m])
) by (job)
由于第一个不正确的查询计算每个 job
的平均响应时间之和,而第二个不正确的查询计算每个 job
的平均响应时间的平均值。这不是大多数用户所期望的 - 有关详细信息,请参阅 this answer。
我有一个 Grafana 仪表板,我尝试在其中绘制一些普罗米修斯指标。
我正在尝试使用以下公式计算 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 条曲线,但不确定结果是否是我正在寻找的结果(是端点的平均响应时间)。
我发现以下查询:
sum(rate(http_request_duration_sum))[24h] / sum(rate(http_request_duration_count))[24h]
是我正在寻找的答案,以秒为单位给我平均响应时间,并且只有 1 条曲线 pr 查询。
当然 scrape_interval 应该 而不是 是 24 小时,所以我将其设置为 [1m]。 <- 根据这个
是的,那些来自普罗米修斯的指标是计数器。因此,您应该添加 rate/irate。对不稳定和快速变化的指标使用 irate
http_request_duration_sum
和 http_request_duration_count
是 counter type 的指标,因此它们通常会随着时间的推移而增加,有时可能会重置为零(例如,当公开这些指标的服务,重新启动):
http_request_duration_sum
指标显示自上次服务重启以来所有请求持续时间的总和。http_request_duration_count
指标显示自上次服务重启以来的请求总数。
所以http_request_duration_sum / http_request_duration_count
给出了自服务启动以来的平均请求持续时间。这个指标没有用,因为它平滑了可能的请求持续时间峰值,并且平滑因子会随着时间的推移而增加。通常人们希望看到过去 N
分钟内的平均请求持续时间。这可以通过将计数器包装到 increase() 函数中来计算,并在方括号中包含所需的回顾持续时间。例如,以下查询 returns 最近 5 分钟的平均请求持续时间(请参阅方括号中的 5m
):
increase(http_request_duration_sum[5m]) / increase(http_request_duration_count[5m])
如果 http_request_duration
指标在多个应用程序(又名作业)或节点(又名实例或抓取目标)上公开,则此查询可能 return 多个时间序列。如果您需要获取每个作业最近 5 分钟的平均请求持续时间,则必须使用 sum 函数:
sum(increase(http_request_duration_sum[5m])) by (job)
/
sum(increase(http_request_duration_count[5m])) by (job)
请注意,sum(...) by (job)
分别应用于 /
的左侧和右侧部分。这不等同于以下 不正确的 查询:
sum(
increase(http_request_duration_sum[5m]) / increase(http_request_duration_count[5m])
) by (job)
avg(
increase(http_request_duration_sum[5m]) / increase(http_request_duration_count[5m])
) by (job)
由于第一个不正确的查询计算每个 job
的平均响应时间之和,而第二个不正确的查询计算每个 job
的平均响应时间的平均值。这不是大多数用户所期望的 - 有关详细信息,请参阅 this answer。