时序数据,即按照相同时序(time series),以时间维度存储的连续数据的集合。
Prometheus存储的时序数据,时序是由Metric以及一组key/value标签定义的,具有相同的Metric以及key/value(例如http_requests_total{method="POST"})则属于相同时序。按照某个时序以时间维度采集的数据,称之为Samples(样本),其值包含:一个float64值、一个毫秒级的unix时间戳。
Prometheus时序数据分为四种类型:
-
Counter
Counter表示收集的数据是按照某个趋势一直单向增减的,对某两个时刻的数据求差值即可得到区间数据的增量。
-
Gauge
Gauge表示搜集的数据是瞬时,与时间没有关系,可以任意变高变低,往往可以用来记录内存使用率、磁盘使用率等。
-
Histogram
将样本的值域划分为不同的区间,即不同的bucket
Prometheus的histogram是一种累积直方图
histogram并不会保存数据采样点值,只记录样本数,且每一个bucket的样本包含了之前所有bucket 的样本
[basename]_bucket{le=“上边界”}, 这个值为小于等于上边界的所有采样点数量
[basename]_sum,对每个采样点的值累加和
[basename]_count,对采样点的次数累加和
[basename]_bucket{le=”+Inf”},它的值必须等于 x_count 的值
-
Summary
每个采样点进行统计,并形成分位图
summary直接存储了 quantile 数据,而不是根据统计区间计算出来的。无需像Histogram一样通过 <basename>_bucket 计算 quantile
[basename]{quantile="0.5"},中位数的值
[basename]_sum,对每个采样点的值累加和
[basename]_count,对采样点的次数累加和
对每一个实例而言,prometheus按照以下时序来存储所采集的数据样本:
up{job="<job-name>", instance="<instance-id>"}: 1 表示该实例正常工作 up{job="<job-name>", instance="<instance-id>"}: 0 表示该实例故障 scrape_duration_seconds{job="<job-name>", instance="<instance-id>"} 表示拉取数据的时间间隔
scrape_samples_post_metric_relabeling{job="<job-name>", instance="<instance-id>"} 表示采用重定义标签(relabeling)操作后仍然剩余的样本数
scrape_samples_scraped{job="<job-name>", instance="<instance-id>"} 表示从该数据源获取的样本数