使用 Prometheus 收集的指标进行 InfluxDB 的下采样并保存
简要说明
「我想确认一下上个月和去年的度量指标情况,于是我决定延长在Prometheus中的保存期限,结果导致内存压力增加…不如尝试使用InfluxDB进行降采样,以长期保存度量指标数据!!!」
步骤
InfluxDB (数据存储平台)。
我将略过InfluxDB本身的构建步骤。
启动influx的命令行界面
influx
创建为Prometheus专用的数据库。
CREATE DATABASE prometheus
3. 制定保留政策
在这里,我们将创建一个保存时间为1小时和30天的策略。
同时,我们将删除默认存在的”autogen”。
CREATE RETENTION POLICY rp_1h ON prometheus DURATION 1h REPLICATION 1 DEFAULT;
CREATE RETENTION POLICY rp_30d ON prometheus DURATION 30d REPLICATION 1;
DROP RETENTION POLICY autogen ON prometheus;
SHOW RETENTION POLICIES;
将rp_1h用DEFAULT进行赋值,这样可以将从prometheus写入的指标首先保存到rp_1h中。
创建连续查询
我們將創建一個查詢,將 rp_1h 降採樣並保存為 rp_30d。
CREATE CONTINUOUS QUERY cq_sample ON prometheus
BEGIN
SELECT max(value) as value
INTO rp_30d.<metrics_name>
FROM <metrics_name>
GROUP BY time(1h), *
END
SHOW CONTINUOUS QUERIES;
可以将*部分替换为标签(这样可以减少数据量,可能更好?)。
普罗米修斯
将数据写入InfluxDB,并设置从InfluxDB读取数据。请根据环境将”localhost”替换为相应的内容。?♂️
remote_write:
- url: "http://localhost:8086/api/v1/prom/write?db=prometheus"
remote_read:
- url: "http://localhost:8086/api/v1/prom/read?db=prometheus"
- url: "http://localhost:8086/api/v1/prom/read?db=prometheus&rp=rp_30d"
在上述的例子中,我们同时参考了两个保留策略。
在CQ中,如果使用不同的指标名称进行插入,则可能会发生重复计数的情况,所以请注意?
完成
搞定了!之后用Grafana或其他工具将Prometheus可视化就可以了!