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 の対を表示できれば良い.