第八講: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() 是不不會取⼀一秒的平均值的