ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

prometheus TSDB和外部存储系统

2021-06-20 12:34:14  阅读:326  来源: 互联网

标签:index 存储 标签 存储系统 时序 索引 prometheus TSDB block


一、TSDB

prometheus可以以自定义格式在磁盘上的本地时序数据库TSDB存储时间序列数据。 ./data ├── 01BKGV7JBM69T2G1BGBGM6KB12 │   └── meta.json ├── 01BKGTZQ1SYQJTR4PB43C8PD98 │   ├── chunks │   │   └── 000001 │   ├── tombstones │   ├── index │   └── meta.json ├── 01BKGTZQ1HHWHV8FBJXW1Y3W0K │   └── meta.json ├── 01BKGV7JC0RY8A6MACW02A2PJD │   ├── chunks │   │   └── 000001 │   ├── tombstones │   ├── index │   └── meta.json ├── chunks_head │   └── 000001 └── wal     ├── 000000002     └── checkpoint.00000001         └── 00000000 存储相关启动参数: --storage.tsdb.path:这决定了Prometheus写入数据库的位置。 默认为/data。 --storage.tsdb.retention.time:这决定了何时删除旧数据。 默认为15d,不包括head block和最新生成的block --storage.tsdb.retention.size:存储块可以使用的最大字节数,最早的数据将被删除。 默认为0或禁用。 --storage.tsdb.wal-compression:启用预写日志(WAL)的压缩,略微消耗CPU负载以大幅减少WAL大小。   文件块block 采集的样本按每两个小时的时间段保存到一个目录,该目录就是一个block 当其保存了3小时数据时会被重新分为2个block(2h+1h) 每个block的名称按照ULID原理生成,共128位(16字节),前48位是时间戳,后80位是随机数,经过base32算法转换成26字节可排序字符串 包含
  • chunks:保存压缩后的时序数据,每个chunk大小为512MB
  • index:用于将度量名称和标签索引到块文件中的时间序列
TOC表:index的入口,记录index文件中其它表的位置。写入其它表的数据前要先将8字节的当前偏移量作为该表的地址记录。               总大小=8*6张表+4字节CRC校验和 符号表:每个标签只在磁盘存储一份,使用标签时直接使用其在符号表中的索引 时序列表:记录该block中每个时序的标签以及这些时序在该block中关联的chunk块 标签索引表:将具有相同标签名称(key)的标签组合到一起,从而形成标签索引,然后根据标签索引查找这些索引 postings表:posting的索引表。每个posting代表一个标签和时序的关联关系
  • meta.json
记录block的元数据信息,用于对block进行维护(如删除过期block、合并历史block) 主要包括数据块记录样本的起始时间、截至时间、样本数、时序数、数据源
  • tombstones
用于对数据进行软删除 TSDB在删除block数据块时会将整个目录删除 但如果只删除一部分数据块的工作则通过tombstones进行删除   寻找时序的逻辑: (1)首先根据时间段找到所有block,并加载每个block的index文件 (2)直接读取index文件最后52字节的TOC表,找到其它表 (3)先访问符号表,确定指标标签的名称和值在索引表中的索引ID (4)通过标签索引表,找到标签在postings表中的位置,从而找到具体的posting, (5)找到标签对应的时序后,根据时序表查找它在block中的具体位置   预写日志WAL 第一个block(head block)存储在内存中并且允许修改 通过预写日志(WAL)防止崩溃,可以在崩溃后重新启动Prometheus服务器时恢复。   预写日志文件以128MB段存储在wal目录中。文件段以数字命名。 写入单位是32KB的页,一次性写入的页不会被跨段存储  

二、外部存储

为支持支持外部存储系统,引入了Adapter适配器,将prometheus读写请求转化为第三方存储远端接口 目前支持的外部存储系统包括: https://prometheus.io/docs/operating/integrations/#remote-endpoints-and-storage 通过HTTP POST请求+protobuf编码方式调用Adapter的读写接口

标签:index,存储,标签,存储系统,时序,索引,prometheus,TSDB,block
来源: https://www.cnblogs.com/yangyuliufeng/p/14906474.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有