無論作什麼事情,咱們都須要作好充足的準備。蓋房子須要打地基,根基不穩地動山搖。咱們學習也同樣,因此咱們想學好一個東西必須根基要打牢。好了廢話很少說了,咱們來打下prometheus的根基。
##數據模型
prometheus存儲是時序數據(time-series),即按照相同時許(相同的名字和標籤),以時間維度存儲連續的數據的集合。正則表達式
時序(time series)是由名字(metrice),以及一組key/value
標籤訂義的,具備相同的名字以及標籤屬於同一時間序列。
時序的名字有ASCLL字符,數字,下劃線,以及冒號組成,它必須知足正則表達式[a-zA-Z_:][a-zA-Z0-9_:]*
,其名字因該具備語義化(看到名字就知道這個抓取的是什麼值),通常表示一個能夠度量的指標,例如:http_requset_total
,表示http的總請求數。
時序的標籤可使prometheus的數據更加豐富,可以區分具體不一樣的實例,例如http_requests_total{method="POST"}
,能夠表示全部的POST請求。
標籤名稱有ASCLL字符,數字,以及下劃線組成,其中_
開頭的屬於prometheus保留,標籤的只能夠是任何ubicode字符,支持中文ide
按照莫哥時序以時間維度採集的數據,稱之爲樣本,其值包含:學習
prometheus 時序格式 與OPenTSDB類似
<metric name>{<label name>=<label value>,....}
其中包含時序名字以及時序的標籤。unix
獲取的數值,只增長(減小),理想狀態下是不會減小(增長)的。咱們每每用它記錄服務的請求總量,錯誤總數code
最簡單的度量指標,只有一個簡單的返回值,或者叫作瞬時狀態,例如:監控硬盤或者內存的使用量,在當前時間只有一個值,由於硬盤的容量和內存的使用量是隨着時間的推移不斷變化,沒有規律可循索引
統計數據的分佈狀況,好比最大值,最小值,中間值還有中位數,75百分位,這是一種特殊的metrics數據類型,表明的是一種近似百分比內存
summary和histogram相似,由<basename>{quantile="<>"}
,<basename>_sum
,<basename>_count
組成,主要用於表示一段時間內數據採樣結果(一般是請求持續時間或響應大小),它直接存儲了quantile數據,而不是根據統計出區間計算出來的requests