Prometheus还提供了下列内置的聚合操作符,这些操作符作用域瞬时向量。可以将瞬时表达式返回的样本数据进行聚合,形成一个新的时间序列。
-
sum(求和) -
min(最小值) -
max(最大值) -
avg(平均值) -
stddev(标准差) -
stdvar(标准差异) -
count(计数) -
count_values(对value进行计数) -
bottomk(后n条时序) -
topk(前n条时序) -
quantile(分布统计)
使用聚合操作的语法如下:
<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]
其中只有count_values, quantile, topk, bottomk支持参数(parameter)。
without用于从计算结果中移除列举的标签,而保留其它标签。by则正好相反,结果向量中只保留列出的标签,其余标签则移除。通过without和by可以按照样本的问题对数据进行聚合。
例如:
sum(http_requests_total) without (instance)
等价于
sum(http_requests_total) by (code,handler,job,method)
如果只需要计算整个应用的HTTP请求总量,可以直接使用表达式:
sum(http_requests_total)
count_values用于时间序列中每一个样本值出现的次数。count_values会为每一个唯一的样本值输出一个时间序列,并且每一个时间序列包含一个额外的标签。
例如:
count_values("count", http_requests_total)
topk和bottomk则用于对样本值进行排序,返回当前样本值前n位,或者后n位的时间序列。
获取HTTP请求数前5位的时序样本数据,可以使用表达式:
topk(5, http_requests_total)
quantile用于计算当前样本数据值的分布情况quantile(φ, express)其中0 ≤ φ ≤ 1。
例如,当φ为0.5时,即表示找到当前样本数据中的中位数:
quantile(0.5, http_requests_total)
本文详细介绍了Prometheus提供的内置聚合操作符,包括求和、最小值、最大值、平均值、标准差、标准变异、计数、对value进行计数、后n条时序、前n条时序和分布统计等。同时讲解了如何使用这些操作符进行瞬时向量的数据聚合,以及without和by关键字的用法。
4万+

被折叠的 条评论
为什么被折叠?



