# **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加密