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+samplelist+mint+maxt组成,maxtmint是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的磁盘部分,指已落盘的真实数据

posted @ 2024-05-13 11:53  嘿123  阅读(19)  评论(0编辑  收藏  举报