Prometheus PromQL 簡單用法


說明

基於上一篇文章的基礎,這里做一些關於 CPU、內存、磁盤的一些基礎查詢語句。

CPU

通過查詢 metric值為 node_cpu_seconds_total 來獲取當前CPU 的所有信息

直接通過此參數參數,會查到的數據是當前CPU的所有相關的收集到的數據。

此時就需要使用 irate 函數,用於計算距離向量中的實際序列的每秒順勢增長率。

再根據標簽篩選來查詢如下:

irate(node_cpu_seconds_total{job="node"}[5m])

使用avg聚合查詢到的數據后,再使用by 來區分實例,這樣就能做到分實例查詢各自的數據。

avg(irate(node_cpu_seconds_total{job="node_srv"}[5m])) by (instance)

上面的語句查詢到的CPU數據,是包含CPU的所有數據,而我們要查詢的是CPU的5分鍾負載

思路就可以這樣:查詢出CPU的空閑值mode='idle',乘以 一百得出空閑百分比后,在用100減去空閑百分比就得出CPU使用的百分比

如下:

100 - ((avg(irate(node_cpu_seconds_total{job="node_srv",mode="idle"}[5m])) by (instance)) * 100)


內存

關於內存的metric值有下面幾個:

  • node_memory_MemTotal_bytes 主機上的內存總量
  • node_memory_MemFree_bytes 主機上的空閑內存
  • node_memory_Buffers_bytes 內存緩沖區大小
  • node_memory_Cached_bytes 內存緩存區大小

那么基於上面的度量值,可以做出很多的查詢。

計算使用內存的百分比:

思路就是用總內存減去空閑內存、緩沖區和緩存區的大小后,再除以總內存

(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100

最后乘以一百是為了得出百分比
結果如下:


磁盤監控

對於磁盤的監控,主要分為三種:

  1. 空間大小監控
  2. 磁盤IO讀寫監控
  3. 預計飽和度監控,意思是說以當前狀態的磁盤寫入速度,預計多長時間磁盤就會被寫滿

磁盤空間利用率百分比

根據標簽篩選,查詢某一個分區的空間利用率

原理是:相同的分區,用總空間減去剩余空間得到使用空間,除以總空間得到利用率百分比

(node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100

預計飽和

這里涉及到一些算法,直接列出公式。

此公式得出的值,當磁盤在未來某個時間段的條件內會寫滿后,得到的數值會是個負數。

predict_linear(node_filesystem_free_bytes{mountpoint="/"}[1h], 4*3600) < 0


免責聲明!

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



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