PromQL基础 | |
http_request_total{} | 瞬时向量表达式,选择当前最新的数据 |
http_request_total{}[5m] | 区间向量表达式,选择以当前时间为基准,5分钟内的数据 |
http_request_total{} offset 5m http_request_total{}[1d] offset 1d |
分钟前的瞬时样本数据 昨天一天的区间内的样本数据 |
PromQL聚合操作 |
|
sum () by (cluster_name) | 每个结果里的value值的求和,单位没限制,例如请求总时间 |
topk(3,count_netstat_wait_connections) |
前n条时序 进行瞬时报警,不是为了观察曲线图 |
bottomk() | 后n条时序 |
quantile(0.5, http_requests_total) | 当φ为0.5时,即表示找到当前样本数据中的中位数 |
min max avg | 最小 最大 平均 |
count() | 每条结果计数,单位次数 |
count_values() | 对value进行计数 |
PromQL 内置函数 |
|
rate(5m) |
取一段时间增量的平均每秒数量, 5m内总增量/5m 适合缓慢变化的计数器(counter) |
irate(5m) |
指定时间范围内的最近两个数据点来算速率 适合快速变化的计数器(counter) |
increase(5m) |
取一段时间增量的总量, 5m内总增量 |
predict_linear(node_filesystem_free{job= "node"}[1h], 4 * 3600) | 适合 gauges,对数据的变化趋势进行预测 |
by 与without(标签名) avg without(cpu) ( rate (node_cpu_seconds_total{mode="idle"}[5m]) ) |
without用于从计算结果中移除列举的标签,而保留其它标签。by则正好相反,结果向量中只保留列出的标签,其余标签
则移除。通过without和by可以按照样本的问题对数据进行聚合。 without不按cpu标签分组,然后计算平均值。 |
ceil(node_load5{instance="192.168.1.75:9100"}) |
四舍五入 |
day_of_month() | 返回被给定 UTC 时间所在月的第几天 |
clamp_max(node_load5{instance="192.168.1.75:9100"}, 2) |
输入一个瞬时向量和最大值,样本数据值若大于 max,则改为 max,否则不变 |
changes(node_load5{instance="192.168.1.75:9100"}[1m]) |
输入一个区间向量, 返回这个区间向量内每个样本数据值变化的次数(瞬时向量)
|
delta(cpu_temp_celsius{host="zeus"}[2h]) |
它计算一个区间向量 v 的第一个元素和最后一个元素之间的差值 用在 Gauge 类型的时间序列上 |