2024 年度 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.10.XX.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
...(略)...
ダッシュボード (グラフ) の作成
テストデータを用いてダッシュボードを作成する. 左上の三本線からメニューが開くので Dashboards を選択する.

New Dashboard を選択する.

Add visualization を追加してグラフを表示するパネルを作る.

もし,データソースを聞かれたら mysql を選択する

パネルを作成する.Format は "time series" にし,右側の Code を選択して SQL 文が書けるようにする.Run query をクリックすると作成した SQL 文が実行される. 必要に応じて上部の表示期間を長くすると良い. グラフが問題なさそうなら,セーブすること.

なお,気温データを書くためには,SQL 文を以下のように設定すると良いだろう.
SELECT UNIX_TIMESTAMP(time) as time_sec, temp as value, name as metric FROM j4oss3 WHERE $__timeFilter(time) ORDER BY time ASC
グラフを見ると,WWW サーバとデータベースサーバの連動 で入力したデータが 2024-10-30 のところに表示されていることがわかる. また,マウスでグラフの幅や描画範囲を変更することができる.
[参考] admin のパスワードを初期化する場合
以下のコマンドを実行することで,再度 admin/admin でログインできるようになる. ログインするとすぐにパスワードの変更が求められる.
$ sudo -s # grafana-cli admin reset-admin-password admin
課題
ホストのIP と温度を表示させるダッシュボードを完成させなさい. URL (IP アドレス(自分のユーザ名がわかるように)) とページの内容がわかるようにスナップショットをとり, それを wbt にアップロード登録せよ.
- ホストの IP は表形式で表示すること.
- 温度の時系列グラフを表示すること.
- 各グラフにタイトルをつけること
例えば以下のようなダッシュボードが作れれば OK である.

表の作り方
ダッシュボードの Add から Visualization を選択.

右側の Visualization から Table を選択. 先の時系列グラフと同様に SQL 文を作成する. 最新のホスト名と IP の対を表示できれば良い.
