Prometheus 查询操作符(三) 聚合运算符
聚合运算符
Prometheus 支持以下内置聚合操作符,这些操作符可用于聚合单个瞬时向量的元素,从而生成一个包含更少元素、具有聚合值的新向量:
sum (在当前维度求和)
min (在当前维度取最小值)
max (在当前维度取最大值)
avg (在当前维度计算平均值)
group (结果向量中的所有值都是 1)
stddev (在当前维度计算标准差)
stdvar (在当前维度计算标准方差)
count (计算向量中元素的个数)
count_values (等于某值的元素个数)
bottomk (按样本值计算的最小 k 个元素)
topk (按样本值计算的最大 k 个元素)
quantile (计算φ-quantile(0≤φ≤1)的值,也就是百分位数)
这些操作符既可以用于对所有标签维度进行聚合,也可以通过包含 without 或 by 子句来保留不同的维度。这些子句可以用在该查询的前面或后面。
Label list
是一个未加引号的标签列表,后面可能包含一个逗号,即(label1, label2)和(label1, label2,)都是有效的语法。
without
删除结果向量中列出的标签,并且保留输出中的其他标签。by
则相反,删除by
子句中没有列出的标签,即使它们的标签值在向量的所有元素中是相同的。
parameter
参数仅用于 count_values、quantile、topk 和 bottomk。
count_values
为每个唯一的样本值输出一个时间序列。每个系列都有一个附加标签。该标签的名称由聚合参数给出,标签值是唯一的样本值。每个时间序列的值是该样本值出现的次数。
topk
和bottomk
与其他聚合器不同的是,在结果向量中返回输入样本的子集(包括原始标签)。by
和without
仅用于抽取输入向量。
quantile
计算φ-quantile
,即在所有维度的 N 个度量值中排名为φ*N 的值。以φ为聚合参数。例如,分位数(0.5,…)计算中位数,分位数(0.95,…)第 95 个百分位。
二进制运算符优先级
下面这个列表列举了 Prometheus 二进制操作符的优先顺序,按照从高到低的顺序排列。
相同优先级的操作符是从左向右进行计算的。例如,2 * 3 % 2
相当于(2 * 3)% 2
。但是^
是从右向左的,所以2 ^ 3 ^ 2
等于2 ^ (3 ^ 2)
。
版权声明: 本文为 InfoQ 作者【耳东@Erdong】的原创文章。
原文链接:【http://xie.infoq.cn/article/df55126e40e6c93fccd1b1265】。未经作者许可,禁止转载。
评论