## 數據模型
---
Prometheus從根本上存儲的所有數據都是[時間序列](http://en.wikipedia.org/wiki/Time_series): 具有時間戳的數據流只屬于單個度量指標和該度量指標下的多個標簽維度。除了存儲時間序列數據外,Prometheus也可以利用查詢表達式存儲5分鐘的返回結果中的時間序列數據
### metrics和labels(度量指標名稱和標簽)
每一個時間序列數據由metric度量指標名稱和它的標簽labels鍵值對集合唯一確定。
這個metric度量指標名稱指定監控目標系統的測量特征(如:`http_requests_total`- 接收http請求的總計數). metric度量指標命名ASCII字母、數字、下劃線和冒號,他必須配正則表達式`[a-zA-Z_:][a-zA-Z0-9_:]*`。
標簽開啟了Prometheus的多維數據模型:對于相同的度量名稱,通過不同標簽列表的結合, 會形成特定的度量維度實例。(例如:所有包含度量名稱為`/api/tracks`的http請求,打上`method=POST`的標簽,則形成了具體的http請求)。這個查詢語言在這些度量和標簽列表的基礎上進行過濾和聚合。改變任何度量上的任何標簽值,則會形成新的時間序列圖
標簽label名稱可以包含ASCII字母、數字和下劃線。它們必須匹配正則表達式`[a-zA-Z_][a-zA-Z0-9_]*`。帶有`_`下劃線的標簽名稱被保留內部使用。
標簽labels值包含任意的Unicode碼。
具體詳見[metrics和labels命名最佳實踐](https://prometheus.io/docs/practices/naming/)。
### 有序的采樣值
有序的采樣值形成了實際的時間序列數據列表。每個采樣值包括:
- 一個64位的浮點值
- 一個精確到毫秒級的時間戳
一個樣本數據集是針對一個指定的時間序列在一定時間范圍的數據收集。這個時間序列是由<metric_name>{<label_name>=<label_value>, ...}
''小結:指定度量名稱和度量指標下的相關標簽值,則確定了所關心的目標數據,隨著時間推移形成一個個點,在圖表上實時繪制動態變化的線條''
### Notation(符號)
表示一個度量指標和一組鍵值對標簽,需要使用以下符號:
> [metric name]{[label name]=[label value], ...}
例如,度量指標名稱是`api_http_requests_total`, 標簽為`method="POST"`, `handler="/messages"` 的示例如下所示:
> api_http_requests_total{method="POST", handler="/messages"}
這些命名和OpenTSDB使用方法是一樣的