一 函數介紹
gauge類型的資料 屬于随機變化數值,并不像counter那樣 是 持續增長
1 increase()
increase 函數 在promethes中,是⽤來 針對Counter 這種持續增 長的數值,截取其中⼀段時間的增量 。 increase(node_cpu[1m]) =》 這樣 就擷取了 CPU總使⽤時間 在1分鐘内的增量,得到的是一個cpu在一分鐘内的增量,increase和rate很相似
rate(1m) 是取⼀段時間增量的平均每秒數量
increase(1m) 則是 取⼀段時間增量的總量
舉例:
increase(node_network_receive_bytes[1m]) 取的是 1分鐘内的 增量總量
rate(node_network_receive_bytes[1m]) 取的是 1分鐘内的增量 除以 60秒 每秒數量
2 sum()
sum( ) 就如其字⾯意思⼀樣 起到value 加合的作⽤,sum( increase(node_cpu[1m]) ) 外⾯套⽤⼀個sum 即可把所有核數值加合,得到所有cpu在一分鐘之内的增量
用法:sum(rate(node_network_receive_bytes[1m]))
3 (instance)
這個函數 可以把 sum加合到⼀起的數值 按照指定的⼀個⽅式 進⾏⼀層的拆分 instance代表的是 機器名
例如:
sum(increase(node_cpu_seconds_total{mode="idle"}[1m]))by (instance)
4 利用上面的函數檢視cpu使用率
idle代表是cpu空閑時間
(1-((sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance))/(sum(increase(node_cpu_seconds_total[1m])) by (instance)))) * 100
sum(increase(node_cpu{mode="idle"}[1m])) by (instance) =》 是空閑CPU時間 1分鐘的增量
sum(increase(node_cpu_seconds_total[1m])) by (instance) 是全部CPU時間 1分 鐘增量
5 rate 函數的使⽤
rate(. ) 函數 是專門搭配counter類型資料使⽤的函數 它的功能 是按照設定⼀個時間段,取counter在這個時間段中 的 平均每秒的增量
例子:
rate(node_network_receive_bytes[1m])
就可以擷取到 在1分鐘時間内,平均每秒鐘的 增量
是以說 我們以後在使⽤任何counter資料類型的時候,永遠記 得 别的先不做 先給它加上⼀個 rate() 或者 increase()
6 topk()
定義:取前⼏位的最⾼值
用法:
Gauge類型的使⽤ topk(3,count_netstat_wait_connections)
Counter類型的使⽤ topk(3,rate(node_network_receive_bytes[20m]))
7 count()
定義: 把數值符合條件的 輸出數⽬進⾏加合
舉例:找出目前(或者曆史的)當TCP等待數⼤于200的 機器數量
count(count_netstat_wait_connections > 200)
二 prometheus指令⾏格式
1 精确比對
指令⾏的查詢 在原始輸⼊的基礎上 先使⽤{} 進⾏第⼀步過濾 count_netstat_wait_connections{exported_instance="log"}
exported_instance 指明 是 那台被監控伺服器 “log” 是⼀台 ⽇志伺服器的機器名