关于使用Prometheus摘要度量计算响应时间,我有一个问题。
我创建了一个摘要度量,它不仅包含服务名称,还包含完整路径和http-方法。
现在,我尝试计算整个服务的平均响应时间。我阅读了这篇关于“费率然后和”的文章,要么我不明白如何计算,要么是IMHO的计算不正确。
据我所知,这应该是计算每秒响应时间的正确方法:
sum by(service_id) (
rate(request_duration_sum{status_code=~"2.*"}[5m])
/
rate(request_duration_count{status_code=~"2.*"}[5m])
)我在这里了解的是为每个子集创建“每秒持续时间”(速率和/速率计数)值,然后为每个service_id创建和。
这对我来说绝对是不对的--但我认为这并不是我所理解的那样有效。
另一种获得相同外观结果的方法是:
sum without (path,host) (
rate(request_duration_sum{status_code=~"2.*"}[5m])
/
rate(request_duration_count{status_code=~"2.*"}[5m])
)如果我忽略我所读到的每一件事,我会用以下的方式来尝试:
rate(sum by(service_id) request_duration_sum{status_code=~"2.*"}[5m])
/
rate(sum by(service_id) request_duration_count{status_code=~"2.*"}[5m])但这根本行不通..。(即时向量与距离向量等)。
发布于 2018-06-27 14:22:45
所有这些例子都是不正确的聚合,因为平均是一个平均值。你想:
sum without (path,host) (
rate(request_duration_sum{status_code=~"2.*"}[5m])
)
/
sum without (path,host) (
rate(request_duration_count{status_code=~"2.*"}[5m])
)这将返回每个status_code的平均延迟时间加上任何其他剩余的标签。
发布于 2022-04-06 17:11:02
例如,假设process_resident_memory_bytes度量与job、instance和datacenter标签一起存在:
process_resident_memory_bytes{job="job1",instance="host1",datacenter="dc1"} N1
process_resident_memory_bytes{job="job1",instance="host2",datacenter="dc1"} N2
process_resident_memory_bytes{job="job1",instance="host1",datacenter="dc2"} N3
process_resident_memory_bytes{job="job2",instance="host1",datacenter="dc1"} N4然后,sum(process_resident_memory_bytes) by (datacenter)将返回每个datacenter内存使用情况的摘要,而sum(process_resident_memory_bytes) without (instance)将返回每个-job的每个datacenter内存使用情况摘要。
发布于 2019-12-02 13:56:46
在Grafana中使用Prometheus度量标准时,without关键字对我不起作用(至少与我预期的一样)。我在by上得到了满意的结果
sum by (status_code)(
rate(request_duration_sum{status_code=~"2.*"}[5m])
)
/
sum by (status_code)(
rate(request_duration_sum{status_code=~"2.*"}[5m])
)https://stackoverflow.com/questions/51064821
复制相似问题