多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# **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 使用同样的符号。