2022 年度 OSS リテラシ3 : 可視化サーバのセットアップ
はじめに
データベースのテーブルに保存された情報をグラフ化するために grafana を用いる.
設定方法は公式のドキュメントに従っている. <URL:https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/>.
インストール
MySQL のデータを可視化するために, grafana を利用する. まずは apt に grafana のリポジトリを追加し, 必要となるパッケージをインストールする.
$ sudo apt update $ sudo apt install curl apt-transport-https gnupg
grafana のリポジトリを追加する. gpg 鍵を追加する必要がある.
$ sudo -s # echo "deb https://packages.grafana.com/oss/deb stable main" >> /etc/apt/sources.list.d/grafana.list # curl https://packages.grafana.com/gpg.key | apt-key add - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1694 100 1694 0 0 3208 0 --:--:-- --:--:-- --:--:-- 3208 OK # exit
grafana のインストール. メッセージから上記で設定したリポジトリからパッケージを取得していることがわかる. また, 以降で実行すべきコマンドも表示される.
$ sudo apt update $ sudo apt install grafana
grafana の起動.
$ sudo systemctl daemon-reload $ sudo systemctl enable grafana-server.service $ sudo systemctl start grafana-server
起動状態の確認. キーボードの q を押すと画面が閉じる.
$ sudo systemctl status grafana-server ● grafana-server.service - Grafana instance Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled) Active: active (running) since Mon 2018-12-10 18:29:14 JST; 18s ago Docs: http://docs.grafana.org Main PID: 24594 (grafana-server) Tasks: 7 (limit: 4915) CGroup: /system.slice/grafana-server.service └─24594 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-serv ....(以下略)....
初期設定
ブラウザで http://10.176.0.XX:3000 (自分のサーバの 3000 番ポート) にアクセスする. 初期状態では, admin/admin でログインできるので, すぐさまパスワードを変更する.


"Add Data Source" を選択.

"MySQL" を選択

データベースへのアクセス情報を入力する. 入力後に "Save & Test" をクリックし, データベースへの接続が成功することを確認すること.
- ホスト名: localhost:3306
- データベース名: iotex
- ユーザ名: grafana
- パスワード: grafana 用に設定したパスワード

追加設定:ログインしなくてもダッシュボードを閲覧可能とする.
ログインしなくても作成されたダッシュボードを見えるようにするために設定ファイルを修正する. 以下のように "Anonymous Auth" セクションを修正し, grafana を再起動する.
$ cd /etc/grafana/ $ sudo cp grafana.ini grafana.ini.bk $ sudo vi grafana.ini #################################### Anonymous Auth ########################## [auth.anonymous] # enable anonymous access enabled = true # specify organization name that should be used for unauthenticated users org_name = Main Org. # specify role for unauthenticated users org_role = Viewer # sudo systemctl restart grafana-server ...(略)...
ダッシュボード (グラフ) の作成
テストデータを用いてダッシュボードを作成する. 以下は気温と湿度をグラフ化した例である.


モードを切り替えるために「Edit SQL」を押す.

気温データのグラフを作るために SQL を書く.さらに,データの表示範囲を 6 hour から 30 days に広げておくこと. 全部終えたら Apply を押す.

なお,気温データを書くためには,SQL 文を以下のように設定する. 要は,テーブル monitoring の列名で置き換えればよい.
<time_column>, time_column --> time <value column> --> temp (温度などの物理量) <series name column> --> hostname (グルーピングする列名. IoTデバイス毎にグラフを書くので) <table name> --> monitoring (利用するテーブル名)
修正後は以下の通り.
SELECT UNIX_TIMESTAMP(time) as time_sec, temp as value, hostname as metric FROM monitoring WHERE $__timeFilter(time) ORDER BY time ASC
グラフを見ると,WWW サーバとデータベースサーバの連動 で入力したデータが 2022-10-01 のところに表示されていることがわかる. グラフが問題なさそうなら,セーブすること. また,マウスでグラフの幅や描画範囲を変更することができる.

[参考] admin のパスワードを初期化する場合
以下のコマンドを実行することで,再度 admin/admin でログインできるようになる. ログインするとすぐにパスワードの変更が求められる.
$ sudo -s # grafana-cli admin reset-admin-password admin
課題
ホストのIP,温度,湿度を表示させるダッシュボードを完成させなさい. URL (IP アドレス(自分のユーザ名がわかるように)) とページの内容がわかるようにスナップショットをとり, それを wbt にアップロード登録せよ.
- ホストの IP は表形式で表示すること.
- 温度と湿度の 2 つのグラフを表示すること.
- 各グラフにタイトルをつけること
- 湿度はグラフの縦軸の最大値を 100 にすること.
- 自分なりの工夫を入れること.

