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
则正好相反,结果向量中只保留列出的标签,其余标签则移除。
通过without
和by
可以根据指标的 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)
对这些指标使用 without
和by
就是这样,
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)