prometheus常用函數詳解

rate函數(速率函數)

rate() 函數是專門搭配counter數據類型使用函數,功能是取counter在這個時間段中平均每秒的增量

1 獲取網卡1m每秒流量平均(此時是有多少網卡將會顯示多少網卡的流量)

表達式

rate(node_network_receive_bytes_total[1m])

2)只看eth0網卡1m每秒流量平均(即所有服務器eth0)

表達式

rate(node_network_receive_bytes_total{device="eth0"}[1m])

3) 只看莫一臺服務器eth0網卡1m每秒流量平均 (可以通過,instance,job等修飾進行精確匹配)

表達式

rate(node_network_receive_bytes_total{device="eth0",instance="jira-old",job="jira-xxxx"}[1m]) 

4 查看一組相同服務器eth0 1m每秒流量平均

表達式

rate(node_network_receive_bytes_total{device="eth0",instance=~"jira.*"}[1m])

 

5) 查看一組服務器eth0 1m每秒流量平均和

表達式

sum(rate(node_network_receive_bytes_total{device="eth0",instance=~"jira.*"}[1m]))

increase函數

increase() 函數表示某段時間內數據的增量

rate() 函數則表示某段時間內數據的平均值

兩個函數如何選取使用?

當我們獲取數據比較精細的時候 類似於1m取樣推薦使用rate()

當我們獲取數據比較粗糙的時候 類似於5m,10m甚至更長時間取樣推薦使用increase()

表達式示例

increase(node_network_receive_bytes_total{device="eth0"}[1m])

sum函數

sum()函數就是求和函數前面已經說過,注意點是當你使用sum後是將所有的監控的服務器的值進行取和,所以當我們只看某一臺時需要進行拆分

拆分常用方法: 1  by increase() 

                         2 by (cluster_name)  屬於自定義標籤不是標準標籤,我們可以手動將不痛功能的服務器進行分組展示

表達式示例

sum(rate(node_network_receive_bytes_total{device="eth0"}[1m]))

topk函數

topk() 函數的定義是:取前面x位的最高值,最簡單理解就是數學的top3 ,當我們有很多服務器我們想要獲取某個key的數據排在前3位的服務器。

Gauge類型使用方式:

topk(3,key)

Counter類型使用方式

topk(3,rate(key[1m]))

注意:此種函數獲得數據並不是很適用圖形化展示

count函數

count() 是找出當前或者歷史數據中某個key的數值大於或小於某個值的統計

表達式示例

count(node_netstat_Tcp_CurrEstab >180)

irate函數

irate(v range-vector)計算範圍向量中時間序列的每秒即時增長​​率。這基於最後兩個數據點。單調性中斷(例如由於目標重啓而導致的計數器重置)會自動調整

表達示例 5m http請求的每秒速率

irate(http_requests_total{job="api-server"}[5m])

irate只應在繪製易失性快速移動計數器時使用。使用rate警報和緩慢移動的櫃檯,因爲在房價短暫變化可以重設FOR條款和圖表完全由罕見尖峯難以閱讀。

注意,當irate()與 聚合運算符(例如sum())或隨時間聚合的函數(以任何結尾的函數_over_time)組合時,總是先取irate()第一個,然後聚合。否則irate()在目標重啓時無法檢測到計數器重置。

更多函數請參考官方文檔:

https://prometheus.io/docs/prometheus/latest/querying/functions/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章