1. Prometheus最终将所有的数据存储为时序数据:带有相同metric和相同label的数据列。除了存储时序数据,Prometheus还是生成临时的时序数据作为查询结果。

指标名称和标签 Metric name and lables

每个时间序列都由指标名称metric name和key-value的标签lables对其唯一标识。
metric name是指监控的一些指标的名称(例如:httprequests_total,是指收到的http请求的总数),它可能包含ASCII字母和数字、下划线、冒号。但是它必须匹配正则表达式`[a-zA-Z:][a-zA-Z0-9_:]*`。

注意:冒号是保留给用户自定义record规则使用的。exporter和direct instrumentation不应该使用冒号。

Prometheus支持标签维度的数据模型:对于任何给定的标签组合,对于相同名称的metric name都可以确定出一个实例。(例如:所有的http请求都用POST方法请求到/api/tracks)。查询语言允许基于这些维度进行过滤和聚合。更改任何标签值,包括增加和删除,都会创建一个新的时间序列。
标签名称可以包含ASCII字母、数字以及下划线。他们必须与正则表达式 [a-zA-Z_][a-zA-Z0-9_]*匹配。以__开头的是预留供内部使用的。
标签值可以包含任何Unicode字符。
标签值为空的标签被视为等同于不存在的标签。
详细的查看最佳实践的指标和标签命名

样本

样本构成了实际的时间序列。每个样本包含:

  • float64的值
  • 毫秒精度的时间戳

    标识

    给定一个metric name和一组lable,时间序列通常用以下表达式标识:
    1. <metric name>{<label name>=<label value>, ...}
    例如:一个时间序列有metric name api_http_requests_total和lable method="POST"``handler="/messages",他能写为如下表达式:
    1. api_http_requests_total{method="POST", handler="/messages"}
    这与OpenTSDB使用的标识相同。