熱門搜索 Zabbix技術資料 Zabbix常見問、答討論 成功案例 Zabbix交流區 Prometheus交流區
前面幾期尊龍時凱君已經跟大家介紹了prometheus的安裝配置、告警規則等等,本期將重點介紹prometheus監控各個指標的含義、類型以及格式。
prometheus主要有四種類型的監控指標:
1.Counter類型的指標:其工作方式和計數器一樣,只增不減(除非系統發生重置)。常見的監控指標,如機器的啟動時間(node_cpu),HTTP訪問量(http_requests_total)等。可以通過PromQL語句對這些指標進行分析,如:
查詢當前系統中,訪問量前10的HTTP地址:
topk(10, http_requests_total)
2.Gauge即儀表類型的指標,側重于反應系統的當前狀態,樣本數據可增可減。如CPU使用率(node_memory_MemFree,主機當前空閑的內容大小),內存使用率(node_memory_MemAvailable,可用內存大小),集群節點個數,大部分監控數據都是這種類型的。 如可通過PromQL內置函數delta()可以獲取樣本在一段時間返回內的變化情況。例如,計算CPU溫度在兩個小時內的差異:
delta(cpu_temp_celsius{host="zeus"}[2h])
3.Histogram:也就是直方圖類型的metric, 能夠分組分區間顯示指標的信息。例如,統計延遲在0 ~ 10ms之間的請求數有多少而10~20ms之間的請求數就可采用這種方式。注意他與summary的區別。
4.summary:好像不是很好翻譯,個人認為是表示分位數(quantile)的信息。分位數0.5表示前50%的數據是什么水平,現實生活中的例子比如班上所有學生身高的中位數,同樣的分位數0.9表示前90%身高的劃分位置。 這個可以參考官方文檔上的例子:
HELP prometheus_tsdb_wal_fsync_duration_seconds Duration of WAL fsync.
TYPE prometheus_tsdb_wal_fsync_duration_seconds summary
prometheus_tsdb_wal_fsync_duration_seconds{quantile=“0.5”} 0.012352463
prometheus_tsdb_wal_fsync_duration_seconds{quantile=“0.9”} 0.014458005
prometheus_tsdb_wal_fsync_duration_seconds{quantile=“0.99”} 0.017316173
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216
從上面的樣本中可以得知當前Prometheus Server進行wal_fsync操作的總次數為216次,耗時2.888716127000002s。其中中位數(quantile=0.5)的耗時為0.012352463,9分位數(quantile=0.9)的耗時為0.014458005s。
這就涉及到Prometheus存儲數據的方式是時間序列的,所謂的時間序列其實就是關于指標的集合,只不過這些指標是按照時間順序排列的。
每條time-series通過指標名稱(metrics name)和一組標簽集(labelset)命名。如下所示,可以將time-series理解為一個以時間為Y軸的數字矩陣:
^
│ . . . . . . . . . . . . . . . . . . . node_cpu{cpu=“cpu0”,mode=“idle”}
│ . . . . . . . . . . . . . . . . . . . node_cpu{cpu=“cpu0”,mode=“system”}
│ . . . . . . . . . . . . . . . . . . node_load1{}
│ . . . . . . . . . . . . . . . . . .
v
<------------------ 時間 ---------------->
在time-series中的每一個點稱為一個樣本(sample),樣本由以下三部分組成:
指標(metric):metric name和描述當前樣本特征的labelsets;
時間戳(timestamp):一個精確到毫秒的時間戳;
樣本值(value): 一個float64的浮點型數據表示當前樣本的值。
如:http_request_total{status=“200”, method=“GET”}@1434417561287 => 94334
每一條metric的格式是:
< metric name>{< label name>=< label value>, ...}
其中以__作為前綴的標簽,是系統保留的關鍵字,只能在系統內部使用。
注意: 實際獲取的信息可能不僅僅包含metric,還有一些注釋,他們都以#開頭,其中HELP用于解釋當前指標的含義,TYPE則說明當前指標的數據類型。
如下面這條信息,就包含了兩條metric。
# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
# HELP node_load1 1m load average.
# TYPE node_load1 gauge
node_load1 3.0703125
這一期的Prometheus技術分享到這就結束了,更多開源監控技術分享請持續關注尊龍時凱官網或尊龍時凱社區(http://forum.ydcanyin.com/)
基于企業IT系統結構特點,結合客戶運維痛點與實際需求,尊龍時凱為該客戶打造了涵蓋全局監控、資產梳理、大屏視圖、專線鏈路、管理門戶、告警中心等于一...
View details