配置磁盘存储
Grafana Pyroscope 中的摄取器 (ingester) 组件处理接收到的性能剖析数据。首先,它将数据组织在内存中,即所谓的“头部块”。一旦头部块的大小超过阈值或头部块的创建时间超过 -pyroscopedb.max-block-duration
(默认为 1 小时),摄取器会将该块写入本地持久化磁盘。有关块布局的更多详细信息,请参阅块格式。
每个块都由一个 ULID 标识,并存储在 Pyroscope 的数据路径 -pyroscopedb.data-path=
(默认为 ./data
)中。此目录按以下结构组织:
./<tenant-id>
: 每个租户都有自己的子目录,包含以下子目录:head/<block-id>
: 包含当前仍在写入的数据。local/<block-id>
: 包含已完成的块,这些块保留在本地。
对象存储
当配置了对象存储时,已完成的块会上传到对象存储桶。
磁盘利用率过高
为了避免丢失最新数据,当 Pyroscope 检测到数据路径所在的卷即将耗尽磁盘空间时,会删除最旧的块。高磁盘利用率检查每隔 -pyroscopedb.retention-policy-enforcement-interval
运行一次,条件是:
- 卷总大小中可用空间小于
-pyroscopedb.retention-policy-min-disk-available-percentage=0.05
,并且 - 可用磁盘空间小于
-pyroscopedb.retention-policy-min-free-disk-gb=10
。
删除操作会记录如下日志:
level=warn caller=pyroscopedb.go:231 ts=2022-10-05T13:19:09.770693308Z msg="disk utilization is high, deleted oldest block" path=data/anonymous/local/01GDZYHKKKY2ANY6PCJJZGT1N8