Prometheus之increase、rate、irate
Counter(计数器) 是 Prometheus 四种指标类型(metric type)之一,该指标特点是值会一直增加,代表积累的数量。应对诸如此类的问题:一共有多少请求处理过?花了多长时间处理请求?对于 Counter,由于是单调递增的积累量,直接使用是没有太大的意义,我们更关心 Counter 指标在一段时间内的变化量,或者是变化率。
PromQL 有三个常见的函数和变化(率)相关,分别是:increase()、rate()、irate()
。
increase
increase(v range-vector),参数 v 是一个区间向量。该函数计算的结果是该区间的增长量。如:
1increase(node_cpu_seconds_total{instance="172.22.21.143:9100", cpu="0", mode="idle"}[2m])
该查询的结果vaule值表示,主机 172.22.21.143 的第 0 个 CPU 在过去 2 分钟时间里,idle 状态所占时长,比如vaule值为 50.03,表示idle占用CPU的时间为为 50.03s。
需要注意的是,像 http_requests_total 这样的 Counter 指标,返回的是 http 请求总数量,该值一定是一个大于等于 0 的整数。但是使用 increase 函数后,返回一段时间的增量值,该值可能不是整数,而是一个小数,原因是如果查询区间的时间与采样时间不重合,没有办法拿到准确的值。Prometheus 的策略会根据范围内的样本点的值进行线性估算,该方法学名是线性外插(Linear Exrapolation),就可能会产生小数。该策略不仅用于 increase 函数,还用于 delta 和 rate 函数。
rate
rate(v range-vector),可以直接计算区间向量在时间窗口内平均变化率。对于快速变化的 Counter,如果使用 rate,因为其计算的是平均变化率,很容易把峰值削平。除非我们把时间间隔设置的足够小,才能够减弱这种效应。
irate
irate(v range-vector),同样用于计算区间向量的变化率,但是其表示的是瞬时增长率。会取最后两个样本值计算瞬时变化率。所以相比较 rate 具有更高的灵敏度。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/prometheus-counter/6724.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.