Prometheus監控學習筆記之PromQL簡單示例


 

0x00 簡單的時間序列選擇

返回度量指標 http_requests_total 的所有時間序列樣本數據:

http_requests_total

返回度量指標名稱為 http_requests_total,標簽分別是 job="apiserver", handler="/api/comments" 的所有時間序列樣本數據:

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

返回度量指標名稱為 http_requests_total,標簽分別是 job="apiserver", handler="/api/comments",且是 5 分鍾內的所有時間序列樣本數據:

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

[info] 注意

一個區間向量表達式不能直接展示在 Graph 圖表中,但是可以展示在 Console 視圖中。

使用正則表達式,你可以通過特定模式匹配標簽為 job 的特定任務名,獲取這些任務的時間序列。在下面這個例子中, 所有任務名稱以 server 結尾。

http_requests_total{job=~".*server"}

Prometheus中的所有正則表達式都使用 RE2 語法

返回度量指標名稱是 http_requests_total, 且 http 返回碼不以 4 開頭的所有時間序列數據:

http_requests_total{status!~"4.."}

 

0x01 使用函數,操作符等

返回度量指標 http_requests_total 過去 5 分鍾內的 http 請求數的平均增長速率:

rate(http_requests_total[5m])

返回度量指標 http_requests_total 過去 5 分鍾內的 http 請求數的平均增長速率總和,維度是 job

sum(rate(http_requests_total[5m])) by (job)
 
結果:
{job="apiserver"} 0.16666666666666666
{job="kubelet"} 0.49999876544124355

如果兩個指標具有相同維度的標簽,我們可以使用二元操作符計算樣本數據,返回值:key: value=標簽列表:計算樣本值。例如,以下表達式返回每一個實例的空閑內存,單位是 MiB。

(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024

如果想知道每個應用的剩余內存,可以使用如下表達式:

sum(
instance_memory_limit_bytes - instance_memory_usage_bytes
) by (app, proc) / 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"}
...

我們可以按照應用和進程類型來獲取 CPU 利用率最高的 3 個樣本數據:

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

假設一個服務實例只有一個時間序列數據,那么我們可以通過下面表達式統計出每個應用的實例數量:

count(instance_cpu_time_ns) by (app)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM