2025 年度 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 wget

grafana のリポジトリを追加する. gpg 鍵を追加する必要がある.

$ sudo -s

# mkdir -p /etc/apt/keyrings/

# wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

# echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

# exit

grafana のインストール. メッセージから上記で設定したリポジトリからパッケージを取得していることがわかる. また, 以降で実行すべきコマンドも表示される.

$ sudo apt update

$ sudo apt install grafana

   grafana (12.2.0) を設定しています ...
   ### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
   sudo /bin/systemctl daemon-reload
   sudo /bin/systemctl enable grafana-server
   ### You can start grafana-server by executing
   sudo /bin/systemctl start grafana-server

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://iot-XX.matsue-ct.ac.jp:3000 (自分のサーバの 3000 番ポート) にアクセスする. 初期状態では, admin/admin でログインできるので, すぐさまパスワードを変更する.

"Add Data Source" を選択.

"MySQL" を選択

データベースへのアクセス情報を入力する. 入力後に "Save & Test" をクリックし, データベースへの接続が成功することを確認すること.

  • ホスト名: localhost:3306
  • データベース名: iotex
  • ユーザ名: grafana
  • パスワード: grafana 用に設定したパスワード



追加設定:ログインしなくてもダッシュボードを閲覧可能とする.

grafana のポートを 8080 に変更し,さらに ログインしなくても作成されたダッシュボードを見えるようにする. 以下のように設定ファイルを修正し,grafana を再起動する.

$ cd /etc/grafana/

$ sudo cp grafana.ini grafana.ini.bk

$ sudo vi grafana.ini

  # The http port to use
  http_port = 8080

  #################################### 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

     ...(略)...

ポートを 8080 に変更しているのは,Express (javaScript) のポートと重なっているためである. ポートを外部に公開するためにファイヤーウォール UFW の設定も行う.

#  ufw allow  in 8080

確認

#  ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80,443/tcp (WWW Full)      ALLOW IN    Anywhere
22                         ALLOW IN    Anywhere
3000                       ALLOW IN    Anywhere
3001                       ALLOW IN    Anywhere
8080                       ALLOW IN    Anywhere
...(IPv6 は省略)...

アクセスするのは以下のようにポートを指定する.

http://iot-XX.matsue-ct.ac.jp:8080

ダッシュボード (グラフ) の作成

テストデータを用いてダッシュボードを作成する. 左上の三本線からメニューが開くので 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 の対を表示できれば良い.