データ可視化ツールGrafanaを使おう!

PC/デジモノ

データを可視化するソフトウェアGrafana(グラファナ)を紹介します。

Grafanaとは?

データの可視化といえばAmbientが非常に軽快で使いやすいです。

IoTデーター可視化サービス Ambient

無料プランは一定の制限がありますが、必要最低限の機能に絞っているおかげで設定が簡単ですぐにデータを確認できるのが良いところです。Arduino用のライブラリも用意されていたりと、小回りが利いて汎用性が高いのもメリットです。

一方、無料プランの場合には1日当たりのデータ数に制限があったり、(運営上なかなか厳しいのか)データ保存期間が短くなってしまったり、一定期間アクセスがないとチャネルごと削除されたりと少々不安な面もあります。

その場でさっと使うのには適していますが長期で運用するには不向きだなあと感じています。

そこで、自前のサーバーでAmbient風な可視化ができないかと探していたところ、オープンソースで開発されているGrafanaというソフトウェアがあることを知り、試してみました。

Linuxマシンへのインストールは非常に簡単で、SQLのデータを可視化(グラフ化)することができますし、WEBブラウザからの操作が基本となりますのでPC,スマホ問わず利用できるのが良いところです。

Ambientなどに比べると非常に高機能なぶん、操作・設定は少々複雑なので少々ハードルは高いです。

どんな人に向いているか

本記事は以下のような方を対象としています。

  • Linuxサーバーを自分で立てられる人(LEMPもしくはLAMP環境)
  • SQLに集めたデータを可視化してWEBブラウザで確認したい
  • Ambientからの乗り換え先を考えている人

私の場合、家中に置いてあるスイッチボット温湿度計のデータをMySQLに集約し、そのデータをリアルタイムで確認する用途に使用しています。その他にも太陽光パネルの発電量やバッテリー電圧の監視、データロガーのグラフ化などにも利用しています。

LEMP環境の構築については過去に記事を書いています。

また、マイコン(ESP32)からSQLへのデータ登録については以下の記事を参照してください。

Grafanaのインストール方法

以下の手順は、ubuntu22.04LTS、RaspberryPi OS Bookworm 64bit Liteの2つのOSでインストールできることを確認しています。

また、繰り返しになりますがLEMPもしくはLAMP環境はインストール済みとします。Grafanaの動作自体にはLEMP(LAMP)環境は不要ですが、これらがないと実質的に使い道がありません(限られます)ので必須と思ってください。ただし、GrafanaはSQLのリモートログインも可能なので別サーバーのSQLサーバーを参照するならインストールは不要です。

また、MySQLにすでに何らかのデータを持っている、ということも前提としています。SQLの使い方についても本記事では解説しません。

Grafanaはwebホスト機能を内蔵しているのでnginxなどとは別に独立して動作します。

インストール手順は以下だけです。繰り返しになりますが、x86マシンにインストールしたUbuntu Server 22.04とRaspberryPi4BにインストールしたRaspberryPiOS Bookworm(64bit Lite)にて動作を確認しています。Debian系ならこれでいけると思います。

$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
$echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
$sudo apt update
$sudo apt install -y grafana
$sudo systemctl enable grafana-server
$sudo systemctl start grafana-server

問題なくインストール出来たら、インストールしたマシンのポート3000をウェブブラウザで開いてください。

http://192.168.0.2:3000

(サーバーのIPアドレスが192.168.0.2の場合)

Grafanaのログイン画面が表示されればうまくいっています。

Grafanaの使い方

初期設定

初期ユーザーとパスワードはadmin/adminです。最初にログインすると新しいadminパスワードを入力する画面に遷移しますので、パスワードを設定してください。


初回起動時はパスワードの変更を求められます。

再ログインの際、admin/(設定したパスワード)でログインできない場合があります。この時はユーザー名をadmin@localhostとしててみてください
問題なければ次のようなホーム画面が表示されます。

データベースの指定

Ambientからの移行だと機能が多すぎてとっつきにくい印象ですが、臆せずやっていきましょう。

まずはMySQLのログイン情報を入力してgrafanaとリンクさせます。この作業は一度でOKです。以降はグラフを作成する際に毎回候補としてデータベース/テーブルが表示されるようになります。


▼左側のメニューから”Connections”を選択


▼”Add new connection”をクリックし、右側のリストから”MySQL”を選ぶ。検索ボックスにmysqlと入力すると早い。


▼右側の”Add new data source”をクリック


▼MySQLのログイン情報を入力する。
NameはGrafana上で使用する名前なので何でもよい。
HOST URL: localhost:3306(通常SQLのポートは3306)
Database name:hoge(使用するSQL上のデータベース名を指定*)
username:hoge(使用するSQLのユーザー名を入力)
password:password(使用するSQLユーザーのパスワードを入力する)

*使用したいSQLデータベース名を指定しますが、実際にはここで入力したSQLユーザーで使用可能な(=閲覧権限がある)データベースが全て選択可能になります。ユーザーが共通なのであれば、データベースごとにこの操作を行う必要はありません。


▼ログイン情報を入力したら”Save&test”をクリック


▼このような表示が出た場合はデータベースへの接続ができていないので設定を見直す。


▼この表示が出ればOK

グラフの作成

続いて実際の可視化(グラフの作成)を行います。


▼左側のメニューから”Dashbords”を選択


▼”+Create dashboard”を選択


▼”+Add visualization”を選択


▼左側にあるリストからmysqlを選んでください


Grafanaのダッシュボード設定画面


▼以下を参考にDataset,Table,Columnを設定


▼入力後、”Run Query”ボタンをクリックするとグラフが表示される。

設定が完了したら右上の”Save dashboard”をクリックしてください。

注意

時間に対するプロットを行う場合、JSTデータだとうまくいきません。勝手にUTCだと解釈されて変な時間になってしまいます。

Grafana上のタイムゾーン設定を変えてもうまくいきません。

このため、データベースにJSTとは別にUTCを記録しておくのが良いです。

何か良い方法をご存じの方は是非コメント欄で教えてください。

おわり

いかがだったでしょうか。今回はSQLのデータをGrafanaを利用してグラフ化する方法を紹介しました。

グラフ作成の細かなオプションなどは紹介しきれないので色々といじって遊んでみてください。

コメント