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 類型的時間序列上 |