PromQL内置函数
所属分类 prometheus
浏览量 291
https://prometheus.io/docs/prometheus/latest/querying/functions/
入参 数据类型
瞬时数据 (Instant vector): 包含一组时序,每个时序只有一个点, http_requests_total
区间数据 (Range vector): 包含一组时序,每个时序有多个点,http_requests_total[5m]
纯量数据 (Scalar): 纯量只有一个数字,没有时序,count(http_requests_total)
聚合函数
sum (求和)
min (最小值)
max (最大值)
avg (平均值)
stddev (标准差)
stdvar (标准差异)
count (样本数量计数)
count_values (对 value 进行计数)
bottomk (样本值最小的 k 个元素)
topk (样本值最大的k个元素)
quantile (分布统计)
其他常用函数
abs(instant-vector) 求瞬时向量绝对值
absent(v instant-vector) 传入一个瞬时非空向量则返回空向量,否则返回不带名称值为1的指标,用来监控空数据的情况
ceil(v instant-vector) 四舍五入取整
floor(v instant-vector) 函数与 ceil() 函数相反,舍弃小数部分取整
changes(v range-vector) 计算区间向量中每个样本值变化次数,返回的是瞬时向量
clamp_max(v instant-vector, max scalar) 瞬时向量值如果大于max 则值修改为max,否则值不变(用于将向量规范到一个不大于max的区间内)
clamp_min(v instant-vector, min scalar) 同理,将向量规范到一个不小于min值的范围内
day_of_month(v=vector(time()) instant-vector) 返回 1~31 向量所在UTC时间中的所在月份的第几天
day_of_week(v=vector(time()) instant-vector) 函数,返回被给定 UTC 时间所在周的第几天。返回值范围:0~6,0 表示星期天。
days_in_month(v=vector(time()) instant-vector) 函数,返回当月一共有多少天。返回值范围:28~31。
delta(v range-vector) 的参数是一个区间向量,返回一个瞬时向量。它计算一个区间向量 v 的第一个元素和最后一个元素之间的差值
idelta(v range-vector) 的参数是一个区间向量, 返回一个瞬时向量。它计算最新的 2 个样本值之间的差值。(当区间内仅有一个向量时无返回值)
deriv(v range-vector) 的参数是一个区间向量,返回一个瞬时向量。它使用简单的线性回归计算区间向量 v 中各个时间序列的导数。
exp(v instant-vector) 输入一个瞬时向量,返回各个样本值的 e 的指数值,即 e 的 N 次方。
当得到一个无穷大的值,显示 +Inf, 反之显示0, e的负数次方无限趋进0。e的空向量指数依然为空向量。
year(v=vector(time()) instant-vector) 返回给定 UTC 时间的当前年份。
hour(v=vector(time()) instant-vector) 返回给定 UTC 时间的当前第几个小时,时间范围:0~23。
minute(v=vector(time()) instant-vector) 返回给定 UTC 时间当前小时的第多少分钟。结果范围:0~59。
month(v=vector(time()) instant-vector) 返回给定 UTC 时间当前属于第几个月,结果范围:0~12。
increase(v range-vector) 获取区间向量中的第一个和最后一个样本并返回其增长量, 它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。
rate(v range-vector) 用于计算区间向量平均增长率,采用区间向量第一个值和最后值进行计算
irate(v range-vector)
用于计算区间向量的增长率,但是其反应出的是瞬时增长率。
irate 函数是通过区间向量中最后两个两本数据来计算区间向量的增长速率,它会在单调性发生变化时(如由于采样目标重启引起的计数器复位)自动中断。
这种方式可以避免在时间窗口范围内的“长尾问题”,并且体现出更好的灵敏度,通过irate函数绘制的图标能够更好的反应样本数据的瞬时变化状态。
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 标签。
up{name="a", job="b"} 1
up{name="a", job="b"} 0
label_join(up{name="a", job="b"}, "full_name", "-", "name", "job") 将会得到一个带有新label的向量
up{name="a", job="b", full_name="a-b"} 1
label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string) 在原标签中匹配字符,放到目标标签中
ln(v instant-vector) 计算瞬时向量 v 中所有样本数据的自然对数。
ln(0) = -lnf 负无穷
ln(lnf) = lnf
ln(负数) = Nan
ln(Nan) = Nan
log2(v instant-vector) 计算瞬时向量 v 中所有样本数据的二进制对数。特殊情况同ln。
log10(v instant-vector) 计算瞬时向量 v 中所有样本数据的十进制对数。特殊情况同ln。
predict_linear(v range-vector, t scalar)
预测时间序列 v 在 t 秒后的值。基于简单线性回归的方式,对时间窗口内的样本数据进行统计,从而可以对时间序列的变化趋势做出预测。
resets(v range-vector) 参数是一个区间向量。
对于每个时间序列,它都返回一个计数器重置的次数。
两个连续样本之间单调性发生变化被认为是一次计数器重置。
round(v instant-vector, to_nearest=1 scalar)
与 ceil 和 floor 类似,返回向量中所有样本值的最接近to_nearest值整数倍的值,当to_nearest=1时等价于ceil。
scalar(v instant-vector) 返回一个单元素瞬时向量的样本值,当多元素或者没有元素返回Nan。
vector(s scalar) 函数将标量 s 作为没有标签的向量返回(和scalar作用刚好相反)。
sort(v instant-vector) 对向量按元素的值进行升序排序。
sort_desc(v instant-vector) 对向量按元素的值进行降序排序。
sqrt(v instant-vector) 计算向量 v 中所有元素的平方根。
timestamp(v instant-vector) 返回向量 v 中的每个样本的时间戳(从 1970-01-01 到现在的秒数)。
avg_over_time(range-vector) 区间向量内每个度量指标的平均值。
min_over_time(range-vector) 区间向量内每个度量指标的最小值。
max_over_time(range-vector) 区间向量内每个度量指标的最大值。
sum_over_time(range-vector) 区间向量内每个度量指标的求和。
count_over_time(range-vector) 区间向量内每个度量指标的样本数据个数。
count(increase(flink_jobmanager_job_runningTime[5m]) >0 ) or vector(0)
每条记录的平均大小
sum(increase(doris_be_stream_load{type='receive_bytes'}[5m])) / sum(increase(doris_be_load_rows[5m]))
与5分钟前比较
doris_be_load_rows / doris_be_load_rows offset 5m
scalar(sum(http_requests_total))
抓取失败的实例数
count(up==0) or vector(0)
count(up{job!='kafka'}==0) or vector(0)
抓取成功的实例数
count(up==1) or vector(0)
<=0 说明 prometheus 挂了 或者 所有节点都挂了
上一篇
下一篇
prometheus 告警规则
Prometheus offset 函数 计算同比环比
Prometheus sum 和 sum_over_time
kafka 与 rabbitMQ 比较
常用组件告警规则
flink-CDC-3.0 mysql to doris 数据同步任务 经常报错 stream load error: [LABEL_ALREADY_EXISTS]