统计形式:avg_over_time, max_over_time, min_over_time,sum_over_time
汇聚函数:avg by, sum by, max by, min by
表达式语言数据类型
instant vector 刹时向量 – 它是指在同一时刻,抓取的所有度量指标数据。这些度量指标数据的 key 都是雷同的,也即雷同的工夫戳。
range vector 范畴向量 – 它是指在任何一个工夫范畴内,抓取的所有度量指标数据。
scalar 标量 – 一个简略的浮点值
string 字符串 – 一个以后没有被应用的简略字符串
刹时向量选择器
刹时向量选择器能够只指定度量名称来获取该度量名的所有的即时向量。
以 kong 网关抓取各个服务的 http 状态码为例
kong_http_status
也能够进行标签筛选,数据埋点的时候咱们会对采集的数据打上不同的 tag 标签
kong_http_status{code="200",service="sky-cmdb"}
能够采纳不匹配的标签值也是能够的,或者用正则表达式不匹配标签。标签匹配操作如下所示:
=: 准确地匹配标签给定的值
!=: 不等于给定的标签值
=~: 正则表白匹配给定的标签值
!~: 给定的标签值不合乎正则表达式
范畴向量选择器
在刹时向量的根底上加上工夫范畴,具体语法是在向量选择器开端的方括号中填上持续时间,用来指定每个后果范畴向量元素提取多长时间值。
持续时间指定为数字,紧接着是以下单位之一:
s – seconds
m – minutes
h – hours
d – days
w – weeks
y – years
kong_http_status{code="200",service="sky-cmdb"}[5m]
偏移修饰符
这个 offset 偏移修饰符容许在查问中扭转单个刹时向量和范畴向量中的工夫偏移
这将返回一周前的刹时向量:
kong_http_status{code="200",service="sky-cmdb"} offset 1w
内置函数
prometheus 内置了许多函数提供咱们调用
abs()
abs(v instant-vector) 返回输出向量,所有样本值都转换为其绝对值。
ceil()
ceil(v instant-vector) 将 v 中所有元素的样本值舍入到最靠近的整数。
delta()
delta(v range-vector) 计算范畴向量 v 中每个工夫系列元素的第一个和最初一个值之间的差值,返回具备给定增量和等效标签的即时向量。delta 被外推以覆盖范围向量选择器中指定的全工夫范畴,因而即便样本值都是整数,也能够取得非整数后果。
rate()
rate(v range-vector) 计算范畴向量中工夫序列的每秒均匀增长率。枯燥性中断(例如因为指标重启而导致的计数器重置)会主动调整。此外,计算推断到工夫范畴的末端,容许错过刮擦或刮擦循环与范畴的时间段的不完满对齐。
sum()
对向量多个标签数据进行聚合
_over_time()
avg_over_time(range-vector): 范畴向量内每个度量指标的平均值。
min_over_time(range-vector): 范畴向量内每个度量指标的最小值。
max_over_time(range-vector): 范畴向量内每个度量指标的最大值。
sum_over_time(range-vector): 范畴向量内每个度量指标的求和值。
count_over_time(range-vector): 范畴向量内每个度量指标的样本数据个数
聚合函数
Prometheus 反对以下内置聚合函数,这些函数可用于聚合单个即时向量的元素,从而生成具备聚合值的较少元素的新向量:
sum (在维度上求和)
max (在维度上求最大值)
min (在维度上求最小值)
avg (在维度上求平均值)
stddev (求标准差)
stdvar (求方差)
count (统计向量元素的个数)
count_values (统计雷同数据值的元素数量)
bottomk (样本值第 k 个最小值)
topk (样本值第 k 个最大值)
quantile (统计分位数)
操作符
除了可能不便的查问和过滤工夫序列以外,还反对丰盛的操作符,用户能够应用这些操作符进一步的对事件序列进行二次加工。这些操作符包含:数学运算符,逻辑运算符,布尔运算符等等。
数学操作符
操作数能够是一个常数,也能够是一个查问表达式,比方:
kong_http_status{service="sky-cmdb"} > 2000
反对的所有数学运算符如下所示:
- (加法)
- (减法)
- (乘法)
/ (除法)
% (求余)
^ (幂运算)
参考:
我在 B 站学运维之 Prometheus 监控 PromQL
PromQL 内置函数
https://prometheus.io/docs/pr…