Prometheus-樣本資料
1.time-series:
#TYPE node_cpu counter #開頭的每一行表示目前Node Exporter采集到的一個監控樣本
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
#node_cpu表明了目前名額的名稱;大括号中的标簽則反映了目前樣本的一些特征和次元;浮點數則是該監控樣本的具體值;
2.樣本sample=time-series:
Prometheus會将所有采集到的樣本資料以時間序列(time-series)的方式儲存在記憶體的TSDB(時序資料庫)中,并且定時儲存到硬碟上。time-series是按照時間戳和值的序列順序存放的,我們稱之為向量(vector). 每條time-series通過名額名稱(metrics name)和一組标簽集(labelset)命名.
time-series中的每一個點稱為一個樣本(sample),樣本由以下三部分組成:
名額(metric):metric name和描述目前樣本特征的labelsets;
時間戳(timestamp):一個精确到毫秒的時間戳;
樣本值(value): 一個folat64的浮點型資料表示目前樣本的值。
<--------------- metric ---------------------><-timestamp -><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355
3.名額:metric
<metric name>{<label name>=<label value>, ...}
#标簽(label)反映了目前樣本的特征次元,通過這些次元Prometheus可以對樣本資料進行過濾,聚合等
Prometheus定義了4中不同的名額類型(metric type):
-
Counter(計數器):隻增不減,例如記錄事件發生的次數
一般在定義Counter類型名額的名稱時推薦使用_total作為字尾 如http_requests_total,node_cpu都是Counter類型的監控名額。
- Gauge(儀表盤):可增可減,名額側重于反應系統的目前狀态
delta(cpu_temp_celsius{host="zeus"}[2h]) #計算CPU溫度在兩個小時内的差異
- Histogram(直方圖)/Summary(摘要):主用用于統計和分析樣本的分布情況
#Summary/Histogram類型的樣本同樣會反應目前名額的記錄的總數(以_count作為字尾)以及其值的總量(以_sum作為字尾)
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216
prometheus_tsdb_compaction_chunk_range_sum 1.1540798e+09
prometheus_tsdb_compaction_chunk_range_count 780
#Histogram名額直接反應了在不同區間内樣本的個數,區間通過标簽len進行定義
prometheus_tsdb_compaction_chunk_range_bucket{le="2.62144e+07"} 780
prometheus_tsdb_compaction_chunk_range_bucket{le="+Inf"} 780
#不同在于Histogram通過histogram_quantile函數是在伺服器端計算的分位數。
#而Sumamry的分位數則是直接在用戶端計算完成
#是以對于分位數的計算而言,Summary在通過PromQL進行查詢時有更好的性能表現,而Histogram則會消耗更多的資源
#反之對于用戶端而言Histogram消耗的資源更少