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 にすること.
  • 自分なりの工夫を入れること.