查詢示例
簡單時間序列選擇
返回所有指標名稱為 http_requests_total 的時間序列
http_requests_total
返回所有指標名稱為 http_requests_total 且具有給定的 job 和 handler 標籤的時間序列
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)