查詢示例

簡單時間序列選擇

返回所有指標名稱為 http_requests_total 的時間序列

http_requests_total

返回所有指標名稱為 http_requests_total 且具有給定的 jobhandler 標籤的時間序列

http_requests_total{job="apiserver", handler="/api/comments"}

返回同一向量在整個時間範圍(在本例中為查詢時間之前的 5 分鐘)內的資料,使其成為一個範圍向量

http_requests_total{job="apiserver", handler="/api/comments"}[5m]

請注意,結果為範圍向量的表示式不能直接繪製成圖表,但可以在表示式瀏覽器的表格(“Console”)檢視中檢視。

使用正則表示式,您可以僅選擇名稱符合特定模式的任務的時間序列,在本例中,為所有以 server 結尾的任務

http_requests_total{job=~".*server"}

要選擇除 4xx 之外的所有 HTTP 狀態碼,您可以執行

http_requests_total{status!~"4.."}

子查詢

返回過去 30 分鐘內 http_requests_total 指標的 5 分鐘速率,解析度為 1 分鐘。

rate(http_requests_total[5m])[30m:1m]

這是一個巢狀子查詢的示例。deriv 函式的子查詢使用預設解析度。請注意,不必要地使用子查詢是不明智的。

max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])

使用函式、運算子等

返回過去 5 分鐘內測得的所有指標名稱為 http_requests_total 的時間序列的每秒速率

rate(http_requests_total[5m])

假設 http_requests_total 時間序列都具有 job(按任務名稱展開)和 instance(按任務例項展開)標籤,我們可能希望對所有例項的速率求和,這樣可以減少輸出的時間序列,但仍然保留 job 維度

sum by (job) (
  rate(http_requests_total[5m])
)

如果我們有兩個具有相同維度標籤的不同指標,我們可以對它們應用二元運算子,兩側具有相同標籤集的元素將被匹配並傳遞到輸出。例如,該表示式返回每個例項未使用的記憶體(以 MiB 為單位)(在暴露了其執行例項這些指標的虛構叢集排程器上)

(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024

同一個表示式,但按應用求和,可以這樣寫

sum by (app, proc) (
  instance_memory_limit_bytes - instance_memory_usage_bytes
) / 1024 / 1024

如果同一個虛構叢集排程器為每個例項暴露如下的 CPU 使用率指標

instance_cpu_time_ns{app="lion", proc="web", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="elephant", proc="worker", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="turtle", proc="api", rev="4d3a513", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="fox", proc="widget", rev="4d3a513", env="prod", job="cluster-manager"}
...

……我們可以這樣獲取按應用(app)和程序型別(proc)分組的前 3 個 CPU 使用者

topk(3, sum by (app, proc) (rate(instance_cpu_time_ns[5m])))

假設該指標為每個執行中的例項包含一個時間序列,您可以像這樣計算每個應用執行中的例項數量

count by (app) (instance_cpu_time_ns)

如果我們正在探究某些指標的標籤,以便例如能夠對其中一些進行聚合,我們可以使用以下表達式

limitk(10, app_foo_metric_bar)

或者,如果我們希望返回的時間序列取樣更均勻,可以使用以下表達式獲取其中大約 10% 的序列

limit_ratio(0.1, app_foo_metric_bar)

本頁內容