写点什么

Prometheus 查询操作符(三) 聚合运算符

用户头像
耳东@Erdong
关注
发布于: 刚刚

聚合运算符

Prometheus 支持以下内置聚合操作符,这些操作符可用于聚合单个瞬时向量的元素,从而生成一个包含更少元素、具有聚合值的新向量:


  • sum (在当前维度求和)

  • min (在当前维度取最小值)

  • max (在当前维度取最大值)

  • avg (在当前维度计算平均值)

  • group (结果向量中的所有值都是 1)

  • stddev (在当前维度计算标准差)

  • stdvar (在当前维度计算标准方差)

  • count (计算向量中元素的个数)

  • count_values (等于某值的元素个数)

  • bottomk (按样本值计算的最小 k 个元素)

  • topk (按样本值计算的最大 k 个元素)

  • quantile (计算φ-quantile(0≤φ≤1)的值,也就是百分位数)


这些操作符既可以用于对所有标签维度进行聚合,也可以通过包含 without 或 by 子句来保留不同的维度。这些子句可以用在该查询的前面或后面。


<aggr-op> [without|by (<label list>)] ([parameter,] <vector expression>)
# 或者<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]
复制代码


Label list是一个未加引号的标签列表,后面可能包含一个逗号,即(label1, label2)和(label1, label2,)都是有效的语法。


without删除结果向量中列出的标签,并且保留输出中的其他标签。by则相反,删除by子句中没有列出的标签,即使它们的标签值在向量的所有元素中是相同的。


parameter参数仅用于 count_values、quantile、topk 和 bottomk。


count_values为每个唯一的样本值输出一个时间序列。每个系列都有一个附加标签。该标签的名称由聚合参数给出,标签值是唯一的样本值。每个时间序列的值是该样本值出现的次数。


topkbottomk与其他聚合器不同的是,在结果向量中返回输入样本的子集(包括原始标签)。bywithout仅用于抽取输入向量。


quantile计算φ-quantile,即在所有维度的 N 个度量值中排名为φ*N 的值。以φ为聚合参数。例如,分位数(0.5,…)计算中位数,分位数(0.95,…)第 95 个百分位。

二进制运算符优先级

下面这个列表列举了 Prometheus 二进制操作符的优先顺序,按照从高到低的顺序排列。


1. ^2. *, /, %3. +, -4. ==, !=, <=, <, >=, >5. and, unless6. or
复制代码


相同优先级的操作符是从左向右进行计算的。例如,2 * 3 % 2相当于(2 * 3)% 2。但是^是从右向左的,所以2 ^ 3 ^ 2等于2 ^ (3 ^ 2)

发布于: 刚刚阅读数: 2
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus 查询操作符(三) 聚合运算符