Prometheus 从根本上将所有数据存储为时间序列:属于同一指标和同一组标记维度的时间戳值流。除了存储的时间序列,Prometheus 可能会生成临时派生的时间序列作为查询的结果。
指标(metric )名称和标签(labels)
每个时间序列都由"指标名称"和"标签"(可选的键值对)唯一标识。
指标名称(metric name):指定被测量的系统的一般特征(例如http_requests_total -
接收到的 HTTP 请求的总数)。
它可能包含 ASCII 字母和数字,以及下划线和冒号。它必须与正则表达式匹配[a-zA-Z_:][a-zA-Z0-9_:]*
。
注意:冒号是为用户定义的录制规则保留的。导出者或直接仪器不应使用它们。
标签(label): Prometheus 的维度数据模型:相同度量名称的任何给定标签组合标识该度量的特定维度实例(例如:使所有使用POST方法访问/api/tracks
的http请求)。查询语言允许基于这些维度进行过滤和聚合。更改任何标签值,包括添加或删除标签,都会创建一个新的时间序列。
标签名称可能包含 ASCII 字母、数字以及下划线。它们必须与正则表达式匹配[a-zA-Z_][a-zA-Z0-9_]*
。以__开头的标签名称保留供内部使用。
标签值可以包含任何 Unicode 字符。
具有空标签值的标签被认为等同于不存在的标签。
另请参阅命名指标和标签的最佳实践。
样例
样例由实际的时间序列数据组成。每个样本包括:
- 一个 float64 值
- 毫秒精度的时间戳
标记方法
给定一个指标名称和一组标签,时间序列经常使用这个符号来识别:
<metric name>{<label name>=<label value>, ...}
例如,具有指标名称api_http_requests_total
和标签method="POST"
的时间序列handler="/messages"
可以这样写:
api_http_requests_total{method="POST", handler="/messages"}