家のダッシュボードをGrafanaで作って運用しています。
Grafanaは時系列数値データをグラフ描画するのが専門なので、こういうダッシュボードはわりと簡単につくれる。
ではデータが数値でなかったら?
具体的には、左上のゴミ出し表示をしてる部分。
地味にゴミ出しの重要度で色が変わったりしている。 たとえばビン・カンは重要(2週間に1回しかない)だから黄色。 |
↑こういうのをGrafanaで作るにはどうする? というのが今回の話。
方法
元データは、ふつうの時系列数値データと同じようにDBに1件ずつ入れる。
time level display_text ---- ----- ------------ 2022-10-10T00:04:02+09:00 0 今日【可燃】 2022-10-10T12:04:02+09:00 1 明日【粉砕, 有害】 2022-10-11T00:04:02+09:00 1 今日【粉砕, 有害】 2022-10-11T12:04:04+09:00 0 明日【プラ】
これらのレコードはGrafanaとは別のプログラムで適当に定時INSERTしている。
ゴミ出しなので更新頻度は半日ごと。12時間に1回新しいデータが1行入る。
データを表示するGrafana側のパネルとして「Stat」を選択。
Stat以外のVisualizationでも似たようなことはできるので、見た目の好みで選べばいいと思います。
クエリ
最新のレコード1件だけが取得されるようになっていればよい。
なので、クエリは適当にこんな感じにする。Group Byを消すのを忘れないこと。
「時系列で降順にして1件取得」 全件取ったあとで絞り込むより、最初からLIMIT使うほうが負荷低い(と期待) |
No Dataの修正
上記の段階ではまだ「No Data」表示になっているはず。
ここで右ペインのValue Optionsを修正する。
※スクショはGrafana9.1.5
旧バージョンだと右ペインじゃなかったかもしれない。
Grafana6とかでも同じことができていたので大丈夫なはず。
Fields のプルダウンを開いて一番下の空白を選ぶ(バグが修正された新しい版では "テーブル名.フィールド名" で表記されている)。
すっごい分かりづらい |
すると「No Data」だったのが「明日【可燃】」とかに書き換わる。あとは文字色とかスタイルを適当に修正すればOK。
重要度に応じて色を変える(オプショナル)
ゴミ出しレコードのlevel値に応じて色を変化させるパネルの作り方。
元データを再掲するとこんな感じ。
time level display_text ---- ----- ------------ 2022-10-10T00:04:02+09:00 0 今日【可燃】 2022-10-10T12:04:02+09:00 1 明日【粉砕, 有害】 2022-10-11T00:04:02+09:00 1 今日【粉砕, 有害】 2022-10-11T12:04:04+09:00 0 明日【プラ】
新規にStatパネルを作り、先程と同様最新1件のlevelを取得するクエリを書く。
次に右ペインのThresholdsを開き、このようにする。
Grafanaこんなふうに結構なんでもできて楽ちんなのでおすすめです。
コメント