Prometheus存储

完整译文请访问:http://www.coderdocument.com/docs/prometheus/v2.14/prometheus/storage.html。

Prometheus包含一个本地磁盘上的时间序列数据库,但也可以与远程存储系统集成。

本地存储

Prometheus的本地时间序列数据库将时间序列数据以自定义格式存储在磁盘上。

磁盘布局

摄入的采样每两个小时被分成一个block。每个block由一个包含一个或多个chunk文件的目录组成,其中,这些chunk文件包含该时间窗口的所有时间序列采样,以及一个元数据文件和索引文件(对块文件中的时间序列指标名称和标签进行索引)。当通过API删除时间序列时,删除的记录存储在单独的tombstone文件中(而不是立即从chunk文件中删除数据)。

当前输入采样的block保存在内存中,尚未完全持久化。当Prometheus服务器在崩溃后重新启动时,可以通过write-ahead-log(WAL)来防止崩溃。write-ahead-log文件以128MB的段存储在wal目录中。这些文件包含尚未压缩的原始数据,因此比常规块文件大得多。Prometheus将保留至少3个write-ahead-log文件,然而高流量的服务器可能会看到超过3个WAL文件,因为它需要保留至少两个小时的原始数据。

Prometheus服务器的数据目录的目录结构如下:

./data
├── 01BKGV7JBM69T2G1BGBGM6KB12
│   └── meta.json
├── 01BKGTZQ1SYQJTR4PB43C8PD98
│   ├── chunks
│   │   └── 000001
│   ├── tombstones
│   ├── index
│   └── meta.json
├── 01BKGTZQ1HHWHV8FBJXW1Y3W0K
│   └── meta.json
├── 01BKGV7JC0RY8A6MACW02A2PJD
│   ├── chunks
│   │   └── 000001
│   ├── tombstones
│   ├── index
│   └── meta.json
└── wal
    ├── 00000002
    └── checkpoint.000001

注意,本地存储的一个限制是它不是集群化的或多副本的。因此,在面对磁盘或节点宕机时,它不是任意可伸缩或持久化的,应该像对待任何其他类型的单节点数据库一样对待它。对于磁盘可用性,建议使用RAID、备份快照、容量规划等,以提高持久性。通过适当的存储持久性并计划在本地存储中存储多年的数据是可能的。

另外,可以通过远程读/写API使用外部存储。需要对这些系统进行仔细的评估,因为它们在耐久性、性能和效率方面差异很大。

有关文件格式的详细信息,请参阅TSDB格式。

压缩

最初的两个小时的块最终在后台压缩成更长时间的块。

压实将产生更大的块,达到保留时间的10%,或21天,以较小的为准。

完整译文请访问:http://www.coderdocument.com/docs/prometheus/v2.14/prometheus/storage.html。

你可能感兴趣的:(文档,Prometheus,存储)