gpt4 book ai didi

prometheus - 为什么在 Prometheus 中使用 irate 或 rate 计算 CPU 利用率?

转载 作者:行者123 更新时间:2023-12-03 18:21:14 31 4
gpt4 key购买 nike

我知道CPU利用率是由非空闲时间占CPU总时间的百分比得出的。在Prometheus中,rateirate函数计算向量数组中的变化率。

人们通常通过以下PromQL表达式来计算CPU利用率:

(100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100))

我不明白计算非空闲时间的每秒变化等于计算CPU使用率。有人可以数学解释为什么这有意义吗?

最佳答案

这里有几件事情需要解开。

首先, rateirate 。链接的问题和博客文章都没有解决这个问题(但 Eitan's answer 确实涉及它)。不同之处在于 rate 估计请求范围内的平均速率(在您的情况下为 1 分钟),而 irate 仅根据最后 2 个样本计算速率。撇开“估计”部分(如果您好奇,请参阅 this answer),两者之间的实际区别在于 rate 将平滑结果,而 irate 将返回 CPU 使用率的样本,这更有可能显示 CPU 中的极端情况用法但也更容易出现 aliasing

例如。如果您查看 Prometheus 的 CPU 使用率,您会注意到它处于某种恒定的基线,每次评估大型规则组时都会出现峰值。给定一个至少与Prometheus评估间隔相同的时间范围,如果您使用rate,随着时间的推移,您将获得或多或少的恒定CPU使用率(即一条直线)。使用irate(假设爬取间隔为5s),您将获得以下两点之一:

  • 如果您的分辨率(即步骤)与 Prometheus 的评估间隔不一致(例如分辨率是 1m 并且评估间隔是 13s ),您将获得 CPU 使用率的随机抽样,并希望看到接近最高和图表上随着时间的推移最低的 CPU 使用率;
  • 如果您的分辨率与 Prometheus 的评估间隔(例如 1m 分辨率和 15s 评估间隔)一致,那么您要么在任何地方看到基线 CPU 使用率(因为您碰巧看到 5s 间隔设置为 1 分钟,当没有规则评估发生时) ) 或到处都是峰值 CPU 使用率(因为您碰巧看到 5s 间隔 1 分钟,每个间隔都涵盖规则评估)。

  • 关于第二点,对 node_cpu_seconds_total 度量代表什么的明显混淆,它是 counter 。这意味着它是一个连续递增的数字,主要测量自导出器启动以来 CPU 空闲的时间。绝对值并不是那么有用(因为它取决于导出器的启动时间,并且在每次重启时都会降至 0)。它的有趣之处在于它在一段时间内增加了多少:从中您可以计算出在给定时间段内每秒增加的速率(平均,使用 rate ;即时,使用 irate )或绝对增加(使用 increase )。所以 rate(node_cpu_seconds_total{mode="idle"}[1m])irate(node_cpu_seconds_total{mode="idle"}[1m]) 都会给你一个比率(在 0.01.0 之间)CPU 空闲时间(过去一分钟,分别在最后 2 个样本之间)。

    关于prometheus - 为什么在 Prometheus 中使用 irate 或 rate 计算 CPU 利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55556051/

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