prometheus常用函數詳解


參考:https://blog.csdn.net/chuchen4441/article/details/100756213


 

rate函數(速率函數)

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

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

表達式

rate(node_network_receive_bytes_total[1m])

1d4a8ab3606f34a044ab535af3e0a91db79.jpg

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

表達式

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

82a5267c836f5b5a05000d13f8bfc5c3e4d.jpg

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

表達式

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

1313b9f7944f09eac86f6f2bf7705d78933.jpg

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

表達式

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

6c96047d3b0d11e5c90948ffbaaa369e999.jpg

 

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

表達式

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

310f74773b301ee539af75c84fcea4367f1.jpg

increase函數

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

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

兩個函數如何選取使用?

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

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

表達式示例

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

7d49e32c074810125c84fe8fedd18781610.jpg

sum函數

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

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

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

表達式示例

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

1afac8be3a018a80ab3393ac27715deabf8.jpg

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)

f76bb590e40cf5aec6bfbb343c000c3e26e.jpg

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/


免責聲明!

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



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