Prometheus 查询操作符 例子

前边说了很多查询的操作符,现在我们集中来看一些例子。

运算操作符

#算数操作符
+ (加法) 
- (减法)
* (乘法)
/ (除法)
% (求余)
^ (幂运算)

上边基本都是常规的运算,幂运算比较少用,我们看一下幂运算

比如下列指标 的值为 5

process_open_fds

我们来求一下 3 次方,也就是 3 次幂 ,最后的结果是 125 。

process_open_fds ^ 3

比较运算符

== (等于)
!= (不等于)
>  (大于)
<  (小于)
>= (大于等于)
<= (小于等于

这些运算符大部分是单独使用,个别情况下可以同时使用,类似大于小于这种情况可以同时使用,枚举一下大约是这么几种情况,其他情况下存在冲突。

> 、 <

>= 、 <

> 、 <=

比如

process_open_fds > 3 and process_open_fds < 7

聚合运算符

sum  #求和
min  #最小值
max  #最大值
avg  #平均值
count   #元素个数
count_values  #等于某值的元素个数
bottomk   #最小的 k 个元素
topk      #最大的 k 个元素

这些函数适合于这个语法

<聚合函数>([parameter,] <指标查询语句>) [without|by (<label list>)]

without⽤于从计算结果中移除列举的标签,⽽保留其它标签。

by 则正好相反,结果向量中只保留列出的标签,其余标签则移除。

通过withoutby可以根据指标的 label 对数据进⾏聚合。

其中只有 count_values , quantile , topk , bottomk ⽀持参数(parameter)。

sum 、max、min、avg 这些都是常见的聚合函数了,我们一起举例就好。

sum(http_request_total)
max(http_request_total)
min(http_request_total)
avg(http_request_total)

对这些指标使用 withoutby 就是这样,

sum(http_request_total) without (instance, job)


sum(http_request_total) by (instance, job)

count 是统计指标数值的个数, count_values 是统计含有某个参数或值的数量。

比如

# 统计文件打开数的值的个数
count(process_open_fds)

# 统计 Instance 有多少个值。
count_values("instance",process_open_fds)

bottomk 和 topk

# 最小的 5 个值
bottomk(5,  process_open_fds)
# 最大的 5 个值,Top 5
topk(5, process_open_fds)

results matching ""

    No results matching ""