zoukankan      html  css  js  c++  java
  • Prometheus——PromQL内置函数

    increase()

    increase(v range-vector) 函数获取区间向量中的第一个和最后一个样本并返回其增长量它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。

    由于这个值被外推到指定的整个时间范围,所以即使样本值都是整数,你仍然可能会得到一个非整数值,如果除以一定时间就可以获取该时间内的平均增长率。

    例如,以下表达式返回区间向量中每个时间序列过去 5 分钟内 HTTP 请求数的增长数:

    increase(http_requests_total{job="apiserver"}[5m])

    该函数配合counter数据类型使用,它的返回值类型只能是计数器类型。

    rate()

    rate(v range-vector) 函数可以直接计算区间向量 v 在时间窗口内平均每秒增长速率,它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。

    该函数配合counter数据类型使用,它的返回值类型只能用计数器,在长期趋势分析或者告警中推荐使用这个函数。该函数的返回结果不带有度量指标,只有标签列表。

    例如,以下表达式返回区间向量中每个时间序列过去 5 分钟内 HTTP 请求数的每秒增长率:

    rate(http_requests_total[5m])
    结果: {code
    ="200",handler="label_values",instance="120.77.65.193:9090",job="prometheus",method="get"} 0 {code="200",handler="query_range",instance="120.77.65.193:9090",job="prometheus",method="get"} 0 {code="200",handler="prometheus",instance="120.77.65.193:9090",job="prometheus",method="get"} 0.2 ...

    [info] 注意

    当将 rate() 函数与聚合运算符(例如 sum())或随时间聚合的函数(任何以 _over_time 结尾的函数)一起使用时,必须先执行 rate 函数,然后再进行聚合操作,

    否则当采样目标重新启动时 rate() 无法检测到计数器是否被重置。

     

    irate()

    irate(v range-vector) 函数用于计算区间向量的增长率,但是其反应出的是瞬时增长率。

    irate 函数是通过区间向量中最后两个两本数据来计算区间向量的增长速率,它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。

    这种方式可以避免在时间窗口范围内的“长尾问题”,并且体现出更好的灵敏度,通过irate函数绘制的图标能够更好的反应样本数据的瞬时变化状态。

    例如,以下表达式返回区间向量中每个时间序列过去 5 分钟内最后两个样本数据的 HTTP 请求数的增长率:

    irate(http_requests_total{job="api-server"}[5m])

    irate 只能用于绘制快速变化的计数器,在长期趋势分析或者告警中更推荐使用 rate 函数。因为使用 irate 函数时,速率的简短变化会重置 FOR 语句,形成的图形有很多波峰,难以阅读。

    [info] 注意

    当将 irate() 函数与聚合运算符(例如 sum())或随时间聚合的函数(任何以 _over_time 结尾的函数)一起使用时,必须先执行 irate 函数,然后再进行聚合操作,

    否则当采样目标重新启动时 irate() 无法检测到计数器是否被重置。

     

    delta()

    delta(v range-vector) 的参数是一个区间向量,返回一个瞬时向量。它计算一个区间向量 v 的第一个元素和最后一个元素之间的差值

    由于这个值被外推到指定的整个时间范围,所以即使样本值都是整数,你仍然可能会得到一个非整数值。

    例如,下面的例子返回过去两小时的 CPU 温度差:

    delta(cpu_temp_celsius{host="zeus"}[2h])

    该函数一般只用在 Gauge 类型的时间序列上。

    计算Counter指标增长率

    我们知道Counter类型的监控指标其特点是只增不减,在没有发生重置(如服务器重启,应用重启)的情况下其样本值应该是不断增大的。为了能够更直观的表示样本数据的变化剧烈情况,需要计算样本的增长速率。

    如下图所示,样本增长率反映出了样本变化的剧烈程度:

    可以通过以下表达式计算Counter类型指标的增长率:

    #下面两句话取出来的结果是一样的,只不过rate()是直接算出区间向量的平均速率,而increase()你要自己去除于秒数。
    increase(node_cpu_seconds_total[2m]) / 120
    rate(node_cpu_seconds_total[2m])

    increase函数:这里通过node_cpu_seconds_total[2m]获取时间序列最近两分钟的所有样本,increase计算出最近两分钟的增长量,

             最后除以时间120秒得到node_cpu_seconds_total样本在最近两分钟的平均每秒增长率。并且这个值也近似于主机节点最近两分钟内的平均CPU使用率。

    rate()函数:该函数配合counter类型数据使用,取counter在这个时间段中的平均每秒增量。比方CPU在2分钟增长了200,那么结果就是200/120。

    引用:

  • 相关阅读:
    本地网络硬盘之在本地使用MsnSkydriver
    编写代码生成器自动赋值方法
    向Html动态加载内容(动态加载脚本,css)
    巧用asp.net(1):自动生成页面头部信息
    Ruby On Rails各版本需注意
    添加强命名程序集
    Javascript写入Html
    SQL Function (SQL自定义函数)
    (译)SDL.NET Surfaces 相关介绍
    用CSS设置Table的细边框的几种方法
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/13563695.html
Copyright © 2011-2022 走看看