Prometheus 的 数据模型 中,metric 是重点。
Metric 由 job / exporter 生成。Metric 由这两部分组成:
- Metric name
- A set of labels
Prometheus 用这种标记来表达 metric:
<metric name>{<label name>=<label value>, ...}
比如:
api_http_requests_total{method="POST", handler="/messages"}
api_http_requests_total{method="GET", handler="/messages"}
这表示名为 api_http_requests_total
,带同样两个 label name(但 value 不同)的 两个不同 metric(但可以理解为同一类型)。
每一个 metric 在某个特定的时刻,会有一个确定的 float64 值与之关联;当 Prometheus server 爬取到这批 metric 时,它当时的值就会被作为一个采样(sample)保存进 server 中。因此一个采样包含了:
- 一个 metric 及值关联的值
- 采样的时间
一批采样数据则被称为时间序列(time-series)数据。
命名要求
- Metric name 及 label name 必须是类 identifier;label value 可以是任意 Unicode 字符
- 命名建议看 best practices for naming metrics and labels