一、简介

  1. prometheus将样本数据保存在本地磁盘当中。按照两个小时为一个时间窗口,将两小时内产生的数据存储在一个块(Block)中,每一个块中包含该时间窗口内的所有样本数据(chunks),元数据文件(meta.json)以及索引文件(index)。
  2. 当前时间窗口内正在收集的样本数据,Prometheus则会直接将数据保存在内存当中。为了确保此期间如果Prometheus发生崩溃或者重启时能够恢复数据,Prometheus启动时会从写入日志(WAL)进行重播,从而恢复数据。此期间如果通过API删除时间序列,删除记录也会保存在单独的逻辑文件当中(tombstone)。
  3. Prometheus保存块数据的目录结构如下所示:

image.png

二、本地存储配置

  • 用户可以通过命令行启动参数的方式修改本地存储的配置。 | 启动参数 | 默认值 | 含义 | | —- | —- | —- | | —storage.tsdb.path | data/ | 本地存储路径 | | —storage.tsdb.retention | 15d | 样本保存时间 | | —storage.tsdb.min-block-duration | 2h | 样本数据持久化到磁盘时间 |

三、从失败中恢复

  1. 如果本地存储由于某些原因出现了错误,最直接的方式就是停止Prometheus并且删除data目录中的所有记录。当然也可以尝试删除那些发生错误的块目录,不过相应的用户会丢失该块中保存的大概两个小时的监控记录。