0
点赞
收藏
分享

微信扫一扫

promSql--内置函数(让你搞懂rate、irate、quantile)

abs()--绝对值

​abs(v instant-vector)​

返回输入向量的所有样本的绝对值。

负数可以返回正数

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入

小数还是返回小数

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_02

整数还是返回整数

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入_03

absent()--用于监控是否有样本数据

​absent(v instant-vector)​

如果传递给它的向量参数具有样本数据,则返回空向量

如果传递的向量参数没有样本数据,则返回不带度量指标名称且带有标签的时间序列,且样本值为1

使用absent用于监控是否有样本数据,如果收集不到样本数据可触发告警

# 这里提供的向量有样本数据
absent(http_requests_total{method="get"}) => no data
absent(sum(http_requests_total{method="get"})) => no data

# 由于不存在度量指标 nonexistent,所以 返回不带度量指标名称且带有标签的时间序列,且样本值为1
absent(nonexistent{job="myjob"}) => {job="myjob"} 1
# 正则匹配的 instance 不作为返回 labels 中的一部分
absent(nonexistent{job="myjob",instance=~".*"}) => {job="myjob"} 1

# sum 函数返回的时间序列不带有标签,且没有样本数据
absent(sum(nonexistent{job="myjob"})) => {} 1

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_04

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_05

ceil()--四舍五入向上取整

​ceil(v instant-vector)​​ 将 v 中所有元素的样本值向上四舍五入到最接近的整数。

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_06


floor()--四舍五入向下取整

​floor(v instant-vector)​

函数与 ceil() 函数相反,将 v 中所有元素的样本值向下四舍五入到最接近的整数。

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_07

changes()--样本数据变化次数

​changes(v range-vector)​

输入一个区间向量, 返回这个区间向量内每个样本数据值变化的次数(瞬时向量)。

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_08

clamp_max()--限制最大返回值

​clamp_max(v instant-vector, max scalar)​

输入一个瞬时向量和最大值,

样本数据值若大于 max,返回 max

样本数据若小于max,则返回原值

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入_09

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入_10

clam_min()--限制最小返回值

​clamp_min(v instant-vector, min scalar)​

输入一个瞬时向量和最小值

样本数据值若小于 min,返回 min

样本数据值若大于 min,返回 原值

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入_11

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_12

day_of_month()

​day_of_month(v=vector(time()) instant-vector)​

返回被给定 UTC 时间所在月的第几天。返回值范围:1~31

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_13

day_of_week()

​day_of_week(v=vector(time()) instant-vector)​

返回被给定 UTC 时间所在周的第几天。返回值范围:0~6,0 表示星期天。

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_14

days_in_month()--一个月有多少天

​days_in_month(v=vector(time()) instant-vector)​

返回当月一共有多少天。返回值范围:28~31。

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_15

month()

​month(v=vector(time()) instant-vector)​

函数返回给定 UTC 时间当前属于第几个月,结果范围:0~12。

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_16

hour()

​hour(v=vector(time()) instant-vector)​

返回被给定 UTC 时间的当前第几个小时,时间范围:0~23。

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入_17

minute()

​minute(v=vector(time()) instant-vector)​

函数返回给定 UTC 时间当前小时的第多少分钟。结果范围:0~59。

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入_18

delta()--区间采样值差值

​delta(v range-vector)​​ 的参数是一个区间向量,返回一个瞬时向量。

它计算一个区间向量 v 的第一个元素和最后一个元素之间的差值。由于这个值被外推到指定的整个时间范围,所以即使样本值都是整数,你仍然可能会得到一个非整数值。

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

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_19

idelta()

idelta(v range-vector) 的参数是一个区间向量, 返回一个瞬时向量。

它计算最新的 2 个样本值之间的差值。这个函数一般只用在 Gauge 类型的时间序列上

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_20

increase()

​increase(v range-vector)​

函数获取区间向量中最后一个样本和第一个的差值

promSql--内置函数(让你搞懂rate、irate、quantile)_四舍五入_21

irate()--最后两个样本数据的增长率

​irate(v range-vector)​

函数用于计算区间向量的增长率,其反应出的是瞬时增长率

irate 函数是通过区间向量中最后两个样本数据来计算区间向量的增长速率

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_22

还可以再举一个例子

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_23

我之前就好奇,时间间隔我取5m或10m有啥区别吗??对irate来说其实没啥区别,取得都是最后两个样本,对rate有点影响,因为rate会计算所有rate的平均值,所有样本数据都会用上

rate()--所有样本增长率的平均值

​rate(v range-vector)​

函数可以直接计算区间向量 v 在时间窗口内平均增长速率

rate会取指定时间范围内所有数据点,算出⼀组速率,然后取平均值作为结果,即:

(每两个样本的差值/30秒)算出多个rate,多个rate再计算平均值。

为什么这里rate==上面的irate??

因为看上图中五分钟内的采样数据,每两个样本的rate都是(2/30=0.066),所以rate==irate了。

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_24

exp()--样本指数值

​exp(v instant-vector)​​​ 函数,输入一个瞬时向量,返回各个样本值的 ​​e​​​ 的指数值,即 e 的 N 次方。当 N 的值足够大时会返回 ​​+Inf​​。特殊情况为:

  • ​Exp(+Inf) = +Inf​
  • ​Exp(NaN) = NaN​

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_25

label_join()--合并成一个新的 label

​label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...)​

将时间序列 v 中多个标签 ​​src_label​​​ 的值,通过 ​​separator​​​ 作为连接符写入到一个新的标签 ​​dst_label​​ 中。可以有多个 src_label 标签。

promSql--内置函数(让你搞懂rate、irate、quantile)_数据_26

label_replace()--正则方式添加额外标签

label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)

为了能够让客户端的图标更具有可读性,可以通过 ​label_replace​​ 函数为时间序列添加额外的标签

label_replace(up{cluster="prod-hangzhou-k8s03", instance="192.**.***:9093"},"host", "$1", "instance",  "(.*):.*")

promSql--内置函数(让你搞懂rate、irate、quantile)_时间序列_27

举报

相关推荐

0 条评论