Prometheus中 rate、irate、increase函数的使用场景
首先给出Prometheus的文档,建议先了解一下
官方文档
以及本文的参考文档:
参考文档
rate()
rate(v range-vector)计算范围向量中时间序列的每秒平均平均增长率。单调性中断(例如由于目标重启而导致的计数器重置)会自动进行调整。同样,计算会外推到时间范围的末尾,从而允许遗漏刮擦或刮擦周期与该范围的时间段不完全对齐。
以下示例表达式返回范围向量中每个时间序列在最近10分钟内测得的CPU的每秒速率:
#表达式{}中的内容为查询条件~rate(container_cpu_usage_seconds_total{name="zun-bfeedb37-eeb2-4e0a-bc06-423b109a77a6"}[10m])
irate()
irate(v range-vector)计算范围向量中时间序列的每秒瞬时增加率。这基于最后两个数据点。单调性中断(例如由于目标重启而导致的计数器重置)会自动进行调整。
下面的示例表达式返回范围向量中每个时间序列的两个最近数据点的CPU的每秒速率,该速率最多可向后10分钟查询:
irate(container_cpu_usage_seconds_total{name="zun-bfeedb37-eeb2-4e0a-bc06-423b109a77a6"}[10m])
increase()
increase(v range-vector)计算范围向量中时间序列的增加。单调性中断(例如由于目标重启而导致的计数器重置)会自动进行调整。根据范围向量选择器中的指定,可以推断出增加的时间以覆盖整个时间范围,因此即使计数器仅以整数增量增加,也可以得到非整数结果。
以下示例表达式返回范围向量中每个时间序列最近10分钟内测得的CPU速率:
increase(container_cpu_usage_seconds_total{name="zun-bfeedb37-eeb2-4e0a-bc06-423b109a77a6"}[10m])
计算Counter指标增长率
我们知道Counter类型的监控指标其特点是只增不减,在没有发生重置(如服务器重启,应用重启)的情况下其样本值应该是不断增大的。为了能够更直观的表示样本数据的变化剧烈情况,需要计算样本的增长速率。
如下图所示,样本增长率反映出了样本变化的剧烈程度:
通过增长率表示样本的变化情况
increase(v range-vector)函数是PromQL中提供的众多内置函数之一。其中参数v是一个区间向量,increase函数获取区间向量中的第一个后最后一个样本并返回其增长量。因此,可以通过以下表达式Counter类型指标的增长率:
increase(node_cpu[2m]) / 120
这里通过node_cpu[2m]获取时间序列最近两分钟的所有样本,increase计算出最近两分钟的增长量,最后除以时间120秒得到node_cpu样本在最近两分钟的平均增长率。并且这个值也近似于主机节点最近两分钟内的平均CPU使用率。
除了使用increase函数以外,PromQL中还直接内置了rate(v range-vector)函数,rate函数可以直接计算区间向量v在时间窗口内平均增长速率。因此,通过以下表达式可以得到与increase函数相同的结果:
rate(node_cpu[2m])
需要注意的是使用rate或者increase函数去计算样本的平均增长速率,容易陷入“长尾问题”当中,其无法反应在时间窗口内样本数据的突发变化。 例如,对于主机而言在2分钟的时间窗口内,可能在某一个由于访问量或者其它问题导致CPU占用100%的情况,但是通过计算在时间窗口内的平均增长率却无法反应出该问题。
为了解决该问题,PromQL提供了另外一个灵敏度更高的函数irate(v range-vector)。irate同样用于计算区间向量的计算率,但是其反应出的是瞬时增长率。irate函数是通过区间向量中最后两个样本数据来计算区间向量的增长速率。这种方式可以避免在时间窗口范围内的“长尾问题”,并且体现出更好的灵敏度,通过irate函数绘制的图标能够更好的反应样本数据的瞬时变化状态。
irate(node_cpu[2m])
irate函数相比于rate函数提供了更高的灵敏度,不过当需要分析长期趋势或者在告警规则中,irate的这种灵敏度反而容易造成干扰。因此在长期趋势分析或者告警中更推荐使用rate函数。
Prometheus中 rate、irate、increase函数的使用场景相关推荐
- PromQL 计算Counter指标增长率 rate irate increase
我们知道Counter类型的监控指标其特点是只增不减,在没有发生重置(如服务器重启,应用重启)的情况下其样本值应该是不断增大的.为了能够更直观的表示样本数据的变化剧烈情况,需要计算样本的增长速率. 如 ...
- promql中使用rate/irate等函数__name__丢失处理
先描述一下情况,我使用prometheus接入hbase监控,采用的方案是用jvm_exporter将hbase自身监控的metrics dump里的json数据转换成prometheus的数据 jm ...
- prometheus-rate、irate、increase函数使用场景
rate() rate(v range-vector)计算范围向量中时间序列的每秒平均平均增长率.单调性中断(例如由于目标重启而导致的计数器重置)会自动进行调整.同样,计算会外推到时间范围的末尾,从而 ...
- Prometheus监控 rate与irate的区别
对官网文档的解读 irate和rate都会用于计算某个指标在一定时间间隔内的变化速率.但是它们的计算方法有所不同:irate取的是在指定时间范围内的最近两个数据点来算速率,而rate会取指定时间范围内 ...
- 在VBA中引用excel的函数
在 Visual Basic 语句中可以使用大多数 Microsoft Excel 工作表函数.若要查看可以使用的工作表函数列表,请参阅 Visual Basic 可使用的工作表函数列表. 注意 一些 ...
- Prometheus 中 histogram_quantile 函数相关的若干问题
原文来源: https://tidb.net/blog/eab62929 作者 | 黄梦龙 histogram_quantile 是 Prometheus 特别常用的一个函数,比如经常把某个服务的 P ...
- C语言中连续调用rand函数,返回值不变
C语言中连续调用rand函数,返回值不变 最近用C语言随机函数编程发现了一个奇怪的现象: 简易版代码: #include<stdio.h> #include<stdlib.h> ...
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- c语言c++语言中静态变量,函数详解
静态变量,静态函数对于一些c,c++的初学者来说,造成了不少的困扰.昨晚和寝室的室友讨论到这 个问题,想了一下,作了一下总结: 虽然说c和c++在很多人的眼里就是孪生姐妹,其实还是有很大区别的.在这里 ...
最新文章
- 一条推文卖出 290 万美元天价?网友:我竟是隐藏的富翁
- HMC管理IBM小机
- 201521123029《Java程序设计》第1周学习总结
- 阅读 LdrInitializeThunk
- 错误 1 未能找到类型或命名空间名称mysql_错误1未能找到类型或命名空间名称“DataPager”(是否缺少 using 指令或程序集引用?)...
- 密码破解之Esxi重置root密码
- OkHttp 官方Wiki之【使用案例】
- 蚌埠电大计算机课心得体会,电大心得体会
- cmd命令 复制文件夹里所有文件到另一个文件夹操作方式
- 现代薄膜温室大棚五大优点,常用的经济作物都有哪些?
- Mac SublimeREPL一点经验
- iOS App添加扩展App Extension
- WPS总结(一)--word中设置样式
- 微信小程序之点击图片滑动到相应内容
- 这么说IBIS模型,你应该就懂了
- 如何提升企业网络曝光率?
- HuaWei(手机)瘦身
- 江苏省苏州市工业园与市区医保公积金合并线上操作指南
- 资源中心:一. 漫画系列
- 计算机网络布局设计(仅供参考)