LoginSignup
2
1

More than 3 years have passed since last update.

prometheusで収集したメトリクスをinfluxdbでダウンサンプリングして保存する

Last updated at Posted at 2021-01-31

概要

「先月、去年のメトリクスはどうだったか確認したい」と思ってprometheusでの保存期間を伸ばすとメモリが圧迫される...
→ influxdbを使ってダウンサンプリングしてメトリクスを長期保存してみる!!!

手順

influxdb

※influxdb自体の構築手順ははぶきます

1. influxのCLIを起動

influx

2. prometheus用のDBを作成する

CREATE DATABASE prometheus

3. Retention Policyを作成する

ここでは1時間保存と30日保存のPolicyを作成してみます。
また、デフォルトで存在する「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_1hDEFAULTを付与していますが、こうすることでpromehteusから書き込まれたメトリクスはまずrp_1hに保存されます

4. Continuous Queryを作成する

rp_1hをダウンサンプリングしてrp_30dに保存するためのQueryを作成してみます。

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;

*の部分はタグに置き換えることも可能です
(そっちの方がデータ量減らせていいかも🤔)

prometheus

データをinfluxdbに書き込み、読み込みもinfluxdbから行うように設定をします
※localhost部分は環境によって置き換えてください🙇‍♂️

prometheus.yml
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"

上記の例では2つのRetention Policyを同時に参照できるようにしています。
CQにおいて違うメトリクス名でinsertしないと多重カウントしてしまう恐れがあるので注意です💦

Done

これで構築完了!
あとはGrafana等でPrometheusを可視化すればOK!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1