Prometheus TSDB概念介绍
Prometheus TSDB概念介绍
序言
为了让新入门的学习者更好地学习后续的文章,本文会针对prometheus中的一些概念进行简要介绍
基本概念
metric name
:指标名称,对于监控数据而言,每一个监控数据都需要有一个指标名称,如监控一个服务接收到的http请求数,那么metric name
一般设置为http_request_counts
label-value pair
: 在这里,我们以服务的http请求数举例,每个请求可能都有一些自己的属性,比如请求状态status,它的值为200或500,那么我们就可以得到status="200"
或status="500"
这样的label-value pair
label-value pair list
: prometheus是一个多维的监控系统,意味着每个请求可以有多个属性,以上述的场景举例,单个请求可能请求到了不同地域的服务,那么我们就会有这样的label-value pair list
:{region="shanghai",status="500"}
,{region="shanghai",status="200"}
series
: prometheus使用metric name
+label-value pair list
来标识一个series,即http_request_count{region="shanghai",status="200"}
就是一个series
sample
: 每个上报给prometheus的监控都是一个sample
,sample由series
+value
+timestamp
组成,即http_request_count{{region="shanghai",status="200"} value timestamp
。
chunk
: sample的集合体,存储多个sample,由series
+sample
list+mint
+maxt
组成,maxt
和mint
是chunk中所有sample中的最大时间和最小时间。一个chunk
中的数据全部归属于一个series
Head Block
: 与大部分数据库类似,prometheus TSDB也是由内存部分和磁盘部分组成,Head Block
属于内存部分,其中会存储最近2个小时内的sample对应的chunk,以及对series,chunk等数据的索引。
WAL
: 与大部分数据库类似,为了实现持久性,prometheus TSDB中也需要WAL
,指的是在真实写入数据之前,需要先写入一份日志记录并落盘。
checkpoint
: 在WAL
增长到一定程度的时候,会占据大量的磁盘空间,并且WAL
中的日志记录会在真实数据落盘之后不再需要,因此会对WAL
中的数据进行定期清理,清理的WAL
中可能有部分真实数据还未落盘,未落盘的这部分数据会作为checkpoint
进行存储
persistent block
: 这部分是TSDB的磁盘部分,指已落盘的真实数据