prometheusで収集したメトリクスをinfluxdbでダウンサンプリングして保存する
概要
「先月、去年のメトリクスはどうだったか確認したい」と思って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_1h
にDEFAULT
を付与していますが、こうすることで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部分は環境によって置き換えてください🙇♂️
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!
Author And Source
この問題について(prometheusで収集したメトリクスをinfluxdbでダウンサンプリングして保存する), 我々は、より多くの情報をここで見つけました https://qiita.com/rhirabay/items/af374e9d5dbac9cf6c75著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .