前言
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30 秒间隔,保留 60 天,大概 200 多G空间。所以Prometheus非常省空间,存储机制高效快捷,和其它组件构成Prometheus系统。
本地存储机制
默认情况下,prometheus 将采集到的数据存储在本地的 TSDB 数据库中,路径默认为 prometheus 安装目录的 data 目录,数据写入过程为先把数据写入 WAL 日志并放在内存,然后 2 小时后将内存数据保存至一个新的 block 块,同时再把新采集的数据写入内存并在 2 小时后再保存至一个新的 block 块,以此类推。
- TSDB:时间序列数据库(Time Series Database),按照时间顺序记录信息的数据库。
- WAL:预写日志算法(Write-Ahead Logging),在修改数据库之前,先把操作日志保存。
存储块block
Prometheus每两小时将内存数据持久化保存到硬盘上,每个Block实际上是一个目录,里面包含着多个文件。
block文件
列出Prometheus存储路径,01开头的目录就是一个Block:
ll /apps/prometheus/data
drwxr-xr-x. 3 root root 68 11月 1 19:00 01GGSDJQC8MK05KW9R4Z46T9B5
drwxr-xr-x. 3 root root 68 11月 1 19:00 01GGSDJQJKZYVM3X6PG5FK3N51
drwxr-xr-x. 3 root root 68 11月 1 19:00 01GGSDJRQ4X7MMC1W17MAP5SVB
列出一个Block目录,里面包含1个目录,3个文件:
ll 01GGSDJRQ4X7MMC1W17MAP5SVB
drwxr-xr-x. 2 root root 20 11月