1. 程式人生 > >你需要精通一種監控-PromQL聚合操作

你需要精通一種監控-PromQL聚合操作

  • 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,