きっかけ
以前からラズパイにセンサーを付けて取得した自宅の環境(温度、湿度、気圧)をPrometheus+Grafanaで可視化したり、ラズパイ達のリソースを監視して楽しんでいたのだが、しばらくするとPrometheusが突然死を繰り返すように。
当初はなす術もなく、数時間おきにPrometheusを再起動して逃げていたのだが、調べる内にPrometheusのデータ保存期間を延ばしたことが原因であることが判明。
※デフォルトは15日間。起動オプション(--storage.tsdb.retention 365d)を付けて1年分の保存を目論んでいた
対応策
私の調べた内容はざっと下記。
- そもそもPrometheusはデータの永続化に興味がない
- 永続化したかったらPrometheusから「remote_write」を使って外部に書き出すといいみたい
- 外部ストレージとして使えるのはInfluxDBとかPostgreSQLとか色々あるらしい
その中でVictoriaMetricsが簡単かつGrafanaのデータソースとしてもPrometheusからそのままリプレースできるということで使ってみることに。
環境
ちなみにVictoriaMetrics導入先の環境はこんなです。
- Raspberry Pi 3 Model B+
- Raspbian GNU/Linux 10 (buster)
- 温度・湿度計測用にDHT22センサーを装着し、Pythonのprometheus_clientを使ってメトリクス生成
- Prometheus関係で動いてるもの
- Prometheus 2.29.1
- Grafana Server 8.1.1 [可視化用]
- AlertManager 0.22.2 [アラート発報用]
- Blackbox Exporter 0.19.0 [URL監視用]
- Node Exporter 1.2.2 [ラズパイのメトリクス取得&センサーデータ用]
導入
Prometheus
設定ファイルにremote_writeを追記してあげて、サービス再起動
(VictoriaMetricsのリスナーポートは8428)
remote_write:
- url: http://localhost:8428/api/v1/write
VictoriaMetrics
簡単。
下記からバイナリをダウンロードして解凍してその場にデータ書き出しでよければ実行するだけ。
常駐させたいし、データもそれなりのところに放り込もうということで、サービス化。
予め/var/lib/victoriaディレクトリを作成し、データ保存期間は12ヶ月としてみた。
[Unit]
Description=Victoria Metrics
Before=prometheus.service
[Service]
User=prometheus
ExecStart=/usr/local/bin/victoria-metrics-prod \
-storageDataPath /var/lib/victoria/ \
-retentionPeriod=12
[Install]
WantedBy=multi-user.target
Grafana
PrometheusデータソースとしてVictoriaMetricsのエンドポイントを指定するだけ。
PromQLがそのまま使えるので、ダッシュボードもデータソースを変えるだけ
まとめ?
色々立ち上げているが、メモリはこれくらい。
安定している感じなので、当面これで使ってみる。
(あ、データのバックアップなにもしてない)
ただ、VictoriaMetricsを立ち上げた当初、Grafanaのデータソースを設定してもデータが見えなかった。
が、2、3日した頃に改めて見たら見えるようになり、その後は安定。
Grafanaの設定は変えていないのだが。。
公式ドキュメントの何かを見落としていたか?(英語苦手)
Prometheus+Grafanaの日本語資料はいっぱいあって、私も色々参考にさせて頂いたのだが、
VictoriaMetricsの日本語資料があまりない上、上記問題があったおかげで難儀したなと。