Tsdb

grafanaでprometheusの値をちょっと計算する

grafanaでprometheusの値をちょっと計算する

今回は

観測している温度データをちょっと分析して1日と7日平均値を同じグラフに表示させたいと思います。

環境

esp32にBME280センサーを接続し、node exporter化してあります。別マシンで動いているprometheusから15sサンプリングしています。ちゃんとデータは取れてグラフ表示も問題ありません。

PromQL

prometheusのデータを取り出すのはPromQLというSQLに似た言語です。TSDBに格納されているデータはRDBと違って、一定間隔以外は差分しかありません。しかもバイナリーに圧縮されています。値を取り出すにはPromQLを勉強する必要がありますが、一からすべて勉強する必要はありません。

公開されているダッシュボードにやりたいことは大抵埋め込まれているます。後は公式docを見ながらアレンジします。

平均値を計算する

温度データは15s間隔で蓄積されていますが、15sで温度が変わることはそうありません。一日とか週間平均がわかると、今日は平均より暖かいかなとか寒いかなという指標になります。 温度データーは、以下のメトリックスに格納されてます。

1
BME280_temperature

1日平均を計算するのは

1
avg_over_time(BME280_temperature[1d])

1週間平均を計算するのは

1
avg_over_time(BME280_temperature[7d])

のように記載すると表示できます。+queryして3つのグラフを1つのパネルに表示します。

同じグラフにプロットするとこんな感じです。

パネルの設定で凡例「Legend」をtableにして「Last(not null)」「Range」を表示させると、1日や1週間の気温差がわかります。

まとめ

温度センサーの値をちょっと計算して表示させることにより、1日平均や7日平均を可視化できるようになりました。時系列DBの関数はちょっと独自ですが、よく使われる関数は準備されているので一からゴリゴリ書かなくてもいいです。

参考リンク

サンプルで学ぶ! PromQLで自在にグラフを描こう (Prometheus + Grafana)

comments powered by Disqus