Raspberry PiはLinuxベースのOSを乗せられる上に、ひと通りのセンサーが積まれていたりGPIOで容易にモジュールを接続できたりと、何かを測定するのにとても便利です。
csvやJsonなどテキスト形式のファイルに出力されることも多いと思いますが、せっかくのLinux環境なのでラズパイ内でデータの可視化ツールを動かせたら便利そうだなと考えました。
環境
Raspberry Pi 3B+/4B (Raspbian GNU/Linux 10 (buster) armv7l )
DockerでデフォルトでインストールされるGrafanaは記事執筆時点(2021/03/15)で7.4.3
です。
準備
Dockerが入っていない場合はインストールしましょう。
$ curl -sSL https://get.docker.com | sh
$ docker -v
Docker version 20.10.5, build 55c4c88
実行
いちいちsudo
をつけて実行するのは煩わしいので、ログインユーザをgroupに入れて権限を与えておくと良いと思います。
sudo docker run -d -p 3000:3000 grafana/grafana
これでlocalhost:3000
にアクセスするとこのような感じでみることができます
私の場合はさらに、
- Grafanaでcsvを読み込むためのプラグインを導入したい
- ローカルにあるファイルをDockerコンテナ内から参照(マウント)したい
という2点をクリアしたかったので、以下のように追記して実行しました。
sudo docker run -d -p 3000:3000 --name=grafana -e "GF_INSTALL_PLUGINS=marcusolsson-csv-datasource" -v /home/pi:/home grafana/grafana
Grafanaを操作する
ログインについて
初期状態ではID/PASSはadmin/admin
になっています。継続的にコンテナを運用するならば入力後に変更しておくと良いでしょう。
データソースの選択
このバージョン(7.4.3)においては
Configuration(右側の歯車マーク)->Data Sources->利用するプラグインの選択('csv'を検索)->LocalファイルPathを入力
といった手順でソースを読み込みます。
この場合のPathはDocker内にマウントしているソースファイルの場所になります。
(私の例では/home/result.csv
)
ダッシュボードの作成
データソースが読み込めたら左の+パネルよりDashboard->Add new panel
と進み、
先ほど読み込んだcsvがデフォルトで表示されているはずなので、csvのヘッダー行に指定している要素を入力していきます。
今回私が使ったデータは自宅のWifiのDL時の速度を計測したもので、
- 日時と日付が入力されている
date
のカラムをTime
型 - 実際の測定値が入った
download
のカラムをNumber
型
でそれぞれ読み込みSwitch to table view
をクリックすると
Y軸、X軸に対応して値がグラフが出力されます。
なお、Edit画面右側の方でグラフの種類や軸(Axis)の調整ができます。
V7.4からはフォーカス時の横棒表示が使いやすくなったりしているみたいです。
一度作成したpanelはドラッグ操作で細かい時間軸での表示などができます。
また、作成したダッシュボードはSave後、左上のShareボタンで(公開環境であれば)リンクを作成することができます。スマートフォン環境にも最適化された表示がされるので便利です。
issue
- 常に最新のデータを表示させるためにはどうしたらええんや...?
->last〇〇 で指定すると良さそう - メトリクスの自動送信とかしたい
ちなみに
Google先生で検索してみると、 Grafanaの他には、
代替案 Grafana
Datadog. ...
Splunk. ...
logstash. ...
Graylog. ...
Fluentd. ...
Prometheus. ...
Nagios Log Server. ...
Scalyr.
のような感じでデータ可視化ツールがあるよと教えてくれました。
この中のいくつかは今回活用したGrafanaのようにDockerイメージが提供されていて同じ使い勝手で利用できるものもあるかと思います。
(ただし、SplunkのようにARMv7用のイメージが提供されていなかったりするので注意)
それぞれのツール同士を連携させる方法もあったりしますのでご自身の好みで色々遊んでみると楽しいかと思います。
最近ではGoogle Data Studioも俄かに流行の兆しを見せていて、一層導入のハードルは下がってい流のではないでしょうか。こちらはBig Queryやメールへのメトリクス画像送信など自社サービスとの連携も強力です。
それでは良いビジュアライズライフを!
参考にした記事
-
grafanaのcsvプラグインを使ってみた - 忘れそうな内容をメモしています
コンテナ起動時のオプション読み込みを参考にしました。 -
10分で理解するGrafana - Qiita
DockerでのGrafana運用やPromehteusとの連携などもう少し詳しくまとめてあります。