Myluzh Blog

PromQL基础语法

发布时间: 2024-10-22 文章作者: myluzh 分类名称: Kubernetes 朗读文章


0x01 瞬时向量与区间向量
瞬时向量:单一时间点的数据,如当前的HTTP请求总数。
http_requests_total
区间向量:在一段时间内的多个样本,如过去5分钟的请求总数。
http_requests_total[5m]

0x02 offset
查询过去5分钟的数据,但使用30分钟前的数据。
http_requests_total[5m] offset 30m

0x03 Label 过滤
精确匹配:过滤处理器为 /login 的数据。
http_requests_total{handler="/login"}
正则匹配:过滤处理器中包含 “login” 的数据。
http_requests_total{handler=~~".*login.*"}
剔除匹配:过滤处理器不包含 “login” 的数据。
http_requests_total{handler!~~".*login.*"}
多值匹配:过滤处理器为 /login 或 /password 的数据。
http_requests_total{handler=~"/login|/password"}

0x04 数学运算
查看主机内存大小并转换为 GB。
node_memory_MemTotal_bytes / 1024 / 1024 / 1024

0x05 集合运算
或运算:获取处理器为 /login 或 /signup 的请求。
http_requests_total{handler="/login"} or http_requests_total{handler="/signup"}
与运算:获取特定实例的内存数据。
node_memory_MemTotal_bytes / 1024 / 1024 / 1024 and {instance="izbp1bddlmdujngbc11omnz"}
除外运算:获取内存数据,但排除特定实例。
node_memory_MemTotal_bytes / 1024 / 1024 / 1024 unless {instance="izbp1bddlmdujngbc11omnz"}

0x06 聚合操作
总和:使用 sum 获取所有机器的内存总和(以 GB 为单位)。
sum(node_memory_MemTotal_bytes / 1024 / 1024 / 1024)
最小值:使用 min 获取所有机器的最小内存值(以 GB 为单位)。
min(node_memory_MemTotal_bytes / 1024 / 1024 / 1024)
平均值:使用 avg 获取所有机器的平均内存值(以 GB 为单位)。
avg(node_memory_MemTotal_bytes / 1024 / 1024 / 1024)
标准差:使用 stddev 获取所有机器内存的标准差(以 GB 为单位)。
stddev(node_memory_MemTotal_bytes / 1024 / 1024 / 1024)
方差:使用 variance 获取所有机器内存的方差(以 GB 为单位)。
variance(node_memory_MemTotal_bytes / 1024 / 1024 / 1024)
计数:使用 count 统计数据总量。
count(node_memory_MemTotal_bytes)
根据字段统计:
sum(http_request_total) by (statuscode, handler)
前N条:使用 topk 获取前N条数据。
topk(5, sum(http_request_total) by (statuscode, handler))
后N条:使用 bottomk 获取后N条数据。
bottomk(5, sum(http_request_total) by (statuscode, handler))
分位数:使用 quantile 获取指定百分比的分位数(0.5表示中位数)。
quantile(0.5, http_request_total)

标签: Prometheus PromQL TSDB

发表评论