Prometheus 基本概念
- point 时序中单一数据点的数据结构,大小
- 标签和标签组
- Sample(样本) 和 Series (时间序列)
Point 数据点
- 源码位置
prometheus-release-2.29/promql/value.go
// Point represents a single data point for a given timestamp.
type Point struct {
T int64
V float64
}
- 具体含义: 一个时间戳和一个value组合成的数据点
- size: 16byte: 包含 1个8byte int64时间戳和1个8byte float64 value

Label 标签 和 Labels 标签组
- 源码位置
prometheus-release-2.29/pkg/labels/labels.go
Label标签
type Label struct {
Name, Value string
}
- 一对label 比如
"instance": "localhost:9090","job": "prometheus"
Labels标签组
type Labels []Label
- 是Label切片的别名
- 一个指标的所有tag values的集合

Sample 和 Series 数据
Sample(样本):
一个样本是在特定时间点对某个指标的观测值。它由三个主要部分组成:指标名称、时间戳和值。例如,http_requests_total{method="GET", status="200"} 100 1690223200 就是一个样本,表示在时间戳 1690223200 时,具有特定标签(method="GET" 和 status="200")的 http_requests_total 指标的值为 100 。
Series(时间序列):
一系列具有相同指标名称和相同标签组合的样本就构成了一个时间序列。换句话说,时间序列是具有相同标识(指标名称和标签)的样本的集合,按照时间顺序排列。
例如,如果我们有一系列样本:
http_requests_total{method="GET", status="200"} 100 1690223200
http_requests_total{method="GET", status="200"} 120 1690223260
http_requests_total{method="GET", status="200"} 150 1690223320
这些样本共同构成了一个时间序列。
通过区分样本和时间序列,可以更清晰地理解和处理 Prometheus 所收集和存储的数据。
比如,假设我们监测网站的每秒请求数,不同的请求方法(如 GET、POST)和响应状态码(如 200、404)会形成不同的时间序列。我们可以通过分析这些时间序列来了解网站在不同条件下的性能和流量模式。
又比如,对于服务器的 CPU 使用率,不同的核心编号或者不同的进程可能会形成各自独立的时间序列,有助于我们更精细地监控和诊断系统的性能问题。
- 源码位置
prometheus-release-2.29/promql/value.go
// Sample is a single sample belonging to a metric.
type Sample struct {
Point
Metric labels.Labels
}
// Series is a stream of data points belonging to a metric.
type Series struct {
Metric labels.Labels `json:"metric"`
Points []Point `json:"values"`
}


评论区