用prometheus在线上跑了两年了,都是用的本地磁盘做数据存储,磁盘空间有限,当空间不足时直接删除数据文件。近期监控系统正式上线了,运营提出了持久化存储监控数据的方案,前段做了选型最终确认使用influxdb,参考:prometheus远程存储之influxdb和timescaledb对比测试
最近一直在POC具体的方案,今天把最终的方案分享出来。
需求
1分钟级别的数据保留 7天,10分钟级别的数据保留2周,1小时级别的数据保留1个月,1天级别的保留3个月
方案
1、创建4个数据库,分别存储不同频率的数据,prometheus:原始数据 、prometheus_10m:按10分钟频率的数据、prometheus_1h:按1小时频率的数据、prometheus_1d:按天频率的数据
2、创建CQ,统计上级频率数据并写入相应频率的数据库中;10m由原始数据统计,1h由10m数据统计,1d数据由1h数据统计
3、开发influxdb remote read adapter,根据查询的开始时间来确定从哪个数据库查数据
db设计
prometheus , 数据保留:15d,分区:1d
prometheus_10m , 数据保留:15d,分区:1d
prometheus_1h , 数据保留:30d,分区:1d
prometheus_1d , 数据保留:730d,分区:7d
相应的sql
C