Kekeの日記

エンジニア、読書なんでも

GrafanaをBIツールのように使ってMySQLのデータを可視化する

image.png

1. Grafanaとは

スクリーンショット 2018-08-28 1.53.09.png

Grafanaとは

オープンソースでリッチな分析とモニタリングプラットフォーム

です。また、Elastic SearchやPrometheusなどあらゆるデータベースでもデータを運用することができます。

typescriptgolangで書かれており、OSSなのでもちろんコントリビュートすることができます。

github.com

Playgroundが公式サイトにはあって、使ってみることができます。

スクリーンショット 2018-08-28 2.00.37.png

1.1 機能

以下のような機能があります。

  • 可視化
  • 通知
  • 統合

また機能に入るかはわかりませんが、とても綺麗なUIを提供しています。

1.2 ホストする方法

ホストする方法は以下の二つがあります。

スクリーンショット 2018-08-28 2.02.40.png

  • 自分でやる
  • GrafanaCloudでホストをする

1.3 コミュニティ

プラットフォームなので、プラグインをはじめとする機能が豊富です。

スクリーンショット 2018-08-28 2.04.20.png

もちろん

  • MySQL
  • Promethus
  • Druid
  • Kubernetes
  • ...

などがあります。

特にコミュニティがあついだけ、今後に期待できると思います。

1.4 UI的なコンセプト

1.4.1 ヘッダー

常に表示されているヘッダーです。

image.png

番号のそれぞれは

番号  名前  概要
サイドメニューバートグル サイドメニューを表示する。ユーザー、オーガニゼーション、データソースなどのダッシュボードと直接関係ない項目がある。
2 ダッシュボードドロップダウン 表示されているダッシュボードがどれか示して、他のダッシュボードへスイッチできる。
3 パネル追加ボタン パネルを追加する
4 ダッシュボタンお気に入りボタン スターをつけたダッシュボードがデフォルトで表示される。 
5  ダッシュボードシェア  表示されているダッシュボードのリンクを作成したり、スナップショットを取れる。
6 ダッシュボードを保存する  保存
7 設定  設定そのまま

を行えます。

1.4.2 ダッシュボードとパネル

ダッシュボードはパネルの集合である。

基本的なダッシュボードは以下の通りです。

image.png

それぞれの番号は

番号  名前
1 表示する範囲を変える
2 現在と相対的な時間を指定できる 
3 手動更新 
4 ダッシュボードパネルそのもの
5 凡例

です。

1.5 システム的なコンセプト

1.5.1 データソース

データソースは時系列データが入ったいろんな種類のバックエンドのことです。

1.5.2 オーガニゼーション

一つのインスタンスでいくつものオーガニゼーションをサポートしていて、すべてのダッシュボードは何かしらのオーガニゼーションに所属します。

1.5.3 ユーザー

Grafanaアカウントによって管理されているユーザーである。

1.5.4 ロー

パネルをダッシュボード内でまとめる役割を持つ。

1.5.5 パネル

可視化するブロック単位のことである。

1.5.6 クエリエディタ

メトリックスをクエリにかけることができる。

2. ローカルから接続する

2.1 MacにHomebrewでインストールする

以下のコマンドでインストールする。

$ brew install grafana

また、以下のように起動方法も親切に教えてもらえるので便利です。

$ brew install grafana

...
To have launchd start grafana now and restart at login:
  brew services start grafana
Or, if you don't want/need a background service you can just run:
  grafana-server --config=/usr/local/etc/grafana/grafana.ini --homepath /usr/local/share/grafana cfg:default.paths.logs=/usr/local/var/log/grafana cfg:default.paths.data=/usr/local/var/lib/grafana cfg:default.paths.plugins=/usr/local/var/lib/grafana/plugins
...

2.2 Grafanaをローカルで起動する

まず、Grafanaで起動させます。

brew services start grafana

起動したら0.0.0.0:3000にアクセスすると以下の画面にみえます。

ポートなど変更したい人のために追記すると、設定ファイルは以下のパスにあります。

/usr/local/etc/grafana/grafana.ini.

スクリーンショット 2018-08-28 2.17.16.png

ここでは以下のユーザー名とパスワードで入ります。

項目  設定値
username admin
password admin

ログインすると以下のように表示されます。

スクリーンショット 2018-08-28 2.29.18.png

2.3 MySQLを接続する

まず、プラグインが必要なのでInstalled Appを押して、Grafana.comで探します。

スクリーンショット 2018-08-28 2.32.45.png

見つけてクリックすると、以下のようなページに遷移します。

スクリーンショット 2018-08-28 3.49.06.png

Installationタブを押すと...

This plugin is included with Grafana and does not require installation. Woo.

すでに入っているみたいですね。

先ほどのページに戻って、Add datasourceをクリックします。

スクリーンショット 2018-08-28 3.51.08.png

そしてMySQLの設定をします。

スクリーンショット 2018-08-28 3.51.48.png

以下のように設定をします。

スクリーンショット 2018-08-28 3.54.15.png

Save&Testを押すと接続できます。

正しく接続できると以下のようになります。

スクリーンショット 2018-08-28 3.55.22.png

元にもどると以下のようになっています。

スクリーンショット 2018-08-28 3.56.09.png

2.4 ダッシュボードを作る

New dashboardを押すと以下の画面になります。

まず、最初のパネルを作ることになります。

スクリーンショット 2018-08-28 3.56.55.png

特定のグラフを使って見ると以下のようにダッシュボードが作成されます。

スクリーンショット 2018-08-28 4.45.58.png

Panel TitleをクリックしてEditを押すと設定できます。 以下のようにクエリがあります。

スクリーンショット 2018-08-28 4.47.49.png

ここでダッシュボードを保存します。

スクリーンショット 2018-08-28 5.01.56.png

ダッシュボードもディレクトリを分けれるので、便利ですね。

2.5 パネルを作る

ここはSQLを書いていきます。

また、以下に便利なマクロが定義されています。

docs.grafana.org

パネルをもっと追加したいときはAdd new panelをクリックしてください。

スクリーンショット 2018-08-28 5.05.06.png

SQL文を書くと以下のように可視化することができます。

スクリーンショット 2018-08-28 5.23.12.png

3. ダッシュボードの共有

Share Dashboardボタンを押してください。

すると以下のような方法で共有することができます。

f:id:bobchan1915:20180830121223p:plain

f:id:bobchan1915:20180830121231p:plain

まとめ

  • MySQLをGrafanaを使ってBIツールのように可視化できた

次はアプリケーションのメトリックスを探っていこうと思います。