1. 程式人生 > 實用技巧 >第八講:prometheus命令列使用擴充套件

第八講:prometheus命令列使用擴充套件

  本講內容

  • prometheus命令列格式
  • rate函式使用
  • increase函式使用
  • sum函式使用  

  (一)prometheus命令列格式

  我們選一個新的key來做講解

count_netstat_wait_connections #TCP wait_connect數

  這個key值不少我們熟悉的node_exporter挖掘而來

  而是我們自定義並使用bash指令碼+pushgateway的方式推送到 prometheus server採集

  型別gauge

  gauge型別的資料,屬於隨機變化的數值,並不像Counter那樣是持續增長的

  把一個key直接輸入命令列之後得到的是最原始的資料輸出

  相對Counter資料gauge不需要任何increase() rate()之類的函式計算

  直接輸入以後就可以看到已經成型的有確實意義的曲線圖,如下圖

  標籤:來自於採集資料也可以自定義

  例如上面資料的instance標籤是指明備監控的伺服器

  可以在命令中使用標籤進行進一步過濾例如

process_open_fds{instance="192.168.1.101:9100"}

  查詢多個有多個結果的時候也可以使用滑鼠點選進行過濾

  過濾後就只顯示某一臺伺服器的資訊

  過濾除了精確匹配 還有 模糊匹配

  例如

process_open_fds{instance=~"192.168.1.*"}

  

模糊匹配=~
模糊不匹配!~

  標籤過濾之後對數值過濾

process_open_fds{instance="192.168.1.11:9100"}>8

  顯示的就是一些片段了

  (二)rate函式

  rate函式可以說是prometheus提供的最重要的喊

  rate函式是專門搭配Counter型別資料使用的函式

  它的功能是安裝設定一個時間段,取Counter在這個時間段中平均每秒的增量  

  舉例說明

  網路流量key

node_network_receive_bytes

  獲取一分鐘內平均每秒的增量

rate(node_network_receive_bytes [1m])

  注意:所以說 我們以後在使⽤任何counter資料型別的時候,永遠記 得 別的先不做 先給它加上⼀個 rate() 或者 increase()

  接下來我們把rate()做的事情更加細化來解釋一下

  例如從09:20:43-09:21:43

  累積量從1031796930910到了1031872038733

  一分鐘內增加的1000bytes(假設)

  從9:21-9:26

  五分鐘增加了5000bytes(假設)

  加入rate(. [1m])之後

  會把1000bytes除以1m*60秒 =~16bytes

  就是這樣計算出在這一分鐘內平均每秒增加16bytes

  

  修改把1m=》5m

  這樣就把5分鐘內的增量除以5m*60秒

  5分鐘的增量加入是5000那麼除以300以後還是約等於16bytes/s

  感覺好像一模一樣

  對比1m和5m

  明顯1分鐘的曲線比5分鐘的曲線平緩

  雖然平均每秒的速度都是16bytes

  如果 我們按照 rate(1m)這樣來取,那麼是取1分鐘內的增量 除 以秒數

  如果 我們按照 rate(5m)這樣來取,那麼是取5分鐘內的增量 除 以秒數

  ⽽這種取法 是⼀種平均的取法 ⽽且是假設的

  剛才我們說 counter在 ⼀分鐘 5分鐘 之內的增量 1000 和 5000 其實是⼀種假設的理想狀態

  事實上 ⽣產環境 ⽹絡資料接收量 可不是這麼平均的 有可能在 第⼀分鐘內 增加了 1000 , 到 第⼆分鐘 就變成增加 了2500 ….

  所以 rate(1m) 這樣的取值⽅法 ⽐起 rate(5m) ,因為它取的時 間段短,所以 任何某⼀瞬間的凸起或者降低 在成圖的時候 會體現的更細緻 更敏感

  ⽽ rate(5m) 把整個5分鐘內的 都⼀起平均了,那麼當發⽣瞬時 凸起的時候 ,會顯得圖平緩了⼀些 (因為 取的時間段長 把 波峰波⾕ 都給平均消下去了)
那麼我們再放⼤⼀些 看看 rate(20m) 會怎麼樣
  

  更加平緩了

  在我們的⼯作中 取1m 還是取5m 這個取決於 我們對於監控資料的敏感性程度來挑選

  (3)increase函式

  increase 函式 其實和rate() 的概念及使⽤⽅法 ⾮常相似

  rate(1m) 是取⼀段時間增量的平均每秒數量 increase(1m) 則是 取⼀段時間增量的總量

  對比

  圖形形狀基本一樣,但是y軸的數值是不一樣的

  從這兩個圖 我們可以看到 其實曲線的⾛勢 基本是⼀樣的 但是 顯⽰出來的數量級bytes 可不⼀樣 3106868.4 * 60 = 186412104 (發現) 正好是 60倍 也就很好理理解了了,increase() 是不不會取⼀一秒的平均值的