# **Data Model**
Prometheus 從根本上將所有數據存儲為時間序列:帶有時間戳 value 的 stream 屬于同一 metric 和同一組 label 的維度。除此之外,Prometheus 可能會生成臨時的推導派生時間序列作為查詢的結果。
## **Metric names & labels**
每個時間序列都由其指標名稱和稱為標簽的可選 KV 對進行唯一標識。
指標名稱指定了所測量系統的一般功能(e.g. http_requests_total - 收到的HTTP 請求總數)。它可以包含 ASCII 字母和數字,以及下劃線和冒號。它必須匹配正則表達式:`[a-zA-Z_:][a-zA-Z0-9_:]*`。
> 注意:冒號是為用戶定義的記錄規則所保留的。exporter 和直接的instrumentation不應使用冒號。
標簽功能使得 Promtheus 的數據模型具備了維度這個特性:具有相同名稱的指標,其任意組合的標簽能夠標識一個特定的維度(例如:所有使用方法 POST 到 /api/tracks 的 HTTP 請求)。查詢語言(QL)允許基于這些維度進行過濾和聚合。更改任意的標簽值,包括添加和刪除標簽,都會創建一個新的時間序列。
標簽的名字可以包含 ASCII 字母,數字,包括下劃線。它必須匹配正則表達式 `\[a-zA-Z\_\]\[a-zA-Z0-9\_\]\*`。標簽名字以 `__` 開始的會作為內部使用而保留。
標簽的值可以包含任意的 Unicode 字符。
查看[指標名稱和標簽的最佳實踐](https://prometheus.io/docs/practices/naming/)。
## **樣本(Sample)**
Samples 形成了實際的時間序列數據。每一個樣本包含:
* 一個 float64 的值
* 一個毫秒精度的時間戳
## **表示法(Notation)**
給出一個指標的名稱和一組標簽,時序通常以如下形式表達:
~~~
<metric name>{<label name>=<label value>, ...}
~~~
例如
~~~
api_http_requests_total{method="POST", handler="/messages"}
~~~
OpenTSDB 使用同樣的符號。
- 介紹(Introduction)
- 概覽(Overview)
- First steps
- 方案比較
- FAQ
- Roadmap
- Media
- 術語表(Glossary)
- 概念(Concepts)
- 數據模型(Data model)
- 指標類型(Metric types)
- 作業和實例(Jobs and instances)
- Prometheus
- Getting started
- 安裝
- 配置
- 配置
- 記錄規則(Recording Rules)
- 報警規則(Alerting Rules)
- 模版示例
- 模版參考
- Rules的單元測試
- Querying
- Basics
- Operators
- Functions
- Examples
- HTTP API
- 存儲(Storage)
- 聯邦(Federation)
- 管理API(Management API)
- 遷移(Migration)
- API穩定性
- 可視化(Virsualization)
- Instrumenting
- 客戶端庫
- 開發客戶端庫
- 推送metrics
- exporters & 集成
- 開發exporters
- 格式一覽(Exposition formats)
- Operating
- 安全
- 集成
- 報警(Alerting)
- 報警概覽
- Alertmanager
- 配置
- 客戶端
- 通知模版參考
- 通知模版樣例
- 管理API
- Best Practices
- Metric & label 名稱
- Instrumentation
- console & dashboard
- Histogram & summary
- 報警
- 記錄規則(Recording rules)
- 何時使用Pushgateway
- Remote write tuning
- Guides
- 使用cAdvisor監控Docker容器
- 使用基于文件的服務發現來發現抓取target
- Basic auth
- 使用node exporter來監控Linux宿主機metrics
- Instrumenting一個Go應用程序
- TLS加密