目录
前篇对PromQL做了介绍,讲了数据模型、2种选择器,本章继续讲PromQL相关知识,主要是聚合操作Aggregation operators
一、聚合操作语法
Prometheus为使用者提供了内置的聚合操作符,这些聚合操作符仅仅适用于对单个即时向量进行聚合操作。它们可以将即时向量聚合后生成一个包含较少元素的新的时间序列。首先,我们看一下聚合操作Aggregation operators的语法信息:
<aggr-op> [without|by (<label list>)] ([parameter,] <vector expression>)
或:
<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]
语法中的without关键字可以把列出的标签从计算结果中删除,而其他未被列出的标签被保留输出;by关键字正好与without执行的操作相反,是将列出的标签保存在结果向量中,删除其余未在by子句中列出的标签。
例如,如果监控指标名称http_requests_total包含由application、instance和group的标签组成的时间序列数据,则可以通过sum操作符进行如下计算,去除instance标签的http请求总数:sum(http_requests_total)without(instance),相当于
sum(http_requests_total) by (application, group)
当然,如果只是需要计算所有应用程序的HTTP请求总量,可以简单地直接写表达式:
sum(http_requests_total)。
二、聚合操作符表
名称 | 描述 |
---|---|
sum | 求和,是最常见的聚合操作符,将组中的所有值相加,并将其作为组的值返回 |
max | 最大值,将组内的最大值作为组的值返回。例如,返回每个实例上最大的文件系统的大小: |
min | 最小值,与最大值规则相同. |
avg | 平均值,返回组中时间序列值的平均值作为组的值。 例如,计算每个CPU每分钟的空闲时间,然后对主机上的所有CPU求平均值: |
stddve | 标准差( standard deviation),对- -组数字分布情况的统计度量,用于检测异常值。例如,作业中的一个实例具有与平均值相差几个标准差的度量标准,这一现象表明它可能存在问题 |
stdvar | 标准方差(standard variance),是标准差的平方,用于统计 |
count | 计数,计算组中的时间序列数,并将其作为组的值返回。 例如,返回主机磁盘设备数量: count without(device)(node_ disk_ _read_ bytes_ total)。 |
count_values | 对相同value进行计数,用于统计时间序列中每一-个样本值出现的次数。count_values会为每个唯一的样本值输出一个时间序列,并且每一个时间序列包含-一个额外的标签。这个标签的名字由聚合参数指定,同时这个标签值是唯-一的样本值 |
bottomk | 用于对样本值进行排序,返回当前样本值后N位的时间序列. |
topk | 与bottomk操作相反,返回当前样本值前N位的时间序列。例如,获取HTTP请求数前5位的时序样本数据: topk(5, http_ requests_total) |
quantile | 用于计算当前样本数据值的分布情况: quantile(中, express)。其中,0≤φ≤1。 例如,当p等于0.5时,用来表示找到以下样本数据中的中位数: quantile (0.5 http. _requests_ total) |