使用 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可视化就可以了!

广告
将在 10 秒后关闭
bannerAds