說明
基於上一篇文章的基礎,這里做一些關於 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
最后乘以一百是為了得出百分比
結果如下:
磁盤監控
對於磁盤的監控,主要分為三種:
- 空間大小監控
- 磁盤IO讀寫監控
- 預計飽和度監控,意思是說以當前狀態的磁盤寫入速度,預計多長時間磁盤就會被寫滿
磁盤空間利用率百分比
根據標簽篩選,查詢某一個分區的空間利用率
原理是:相同的分區,用總空間減去剩余空間得到使用空間,除以總空間得到利用率百分比
(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