gpt4 book ai didi

prometheus - PromQL "by"和 "without"之间的区别不清楚

转载 作者:行者123 更新时间:2023-12-04 21:04:01 26 4
gpt4 key购买 nike

我有一个关于使用 Prometheus 摘要指标计算响应时间的问题。

我创建了一个汇总指标,其中不仅包含服务名称,还包含完整路径和 http 方法。

现在我尝试计算完整服务的平均响应时间。
我阅读了关于“比率然后总和”的文章,要么我不明白计算是如何完成的,要么计算是恕我直言不正确。

据我所知,这应该是计算每秒响应时间的正确方法:

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])
)
  • 但有什么区别呢?
  • 这里到底发生了什么?
  • 如果我使用“max”而不是“sum”,为什么老实说我只能得到可测量的值?

  • 如果我忽略我阅读的所有内容,我会按以下方式尝试:
    rate(sum by(service_id) request_duration_sum{status_code=~"2.*"}[5m])
    /
    rate(sum by(service_id) request_duration_count{status_code=~"2.*"}[5m])

    但这根本不起作用......(即时向量与范围向量等等......)。

    最佳答案

    所有这些示例都错误地聚合,因为您正在求平均值。你要:

      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 的平均延迟加上任何其他剩余的标签。

    关于prometheus - PromQL "by"和 "without"之间的区别不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51064821/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com