三流エンジニアの落書き帳

さあ、今日も未知という扉を開けてみよう

Grafanaでイケてるグラフを作る!

環境構築第3弾ということで、今回はGrafanaを構築していきます。

Prometheusでもグラフは見られるんですけど、お世辞にも見やすいとは言えません。

そこでGrafanaと呼ばれるログデータの可視化ツールを使ってPrometheusから取得したメトリクスを可視化していきます。

Grafana

Grafanaってそもそも何ぞ?という方はこちらの記事をご参考ください。

qiita.com

とりあえずデータソースからクエリを通じて値を取得して可視化するツールという認識くらいでいいと思います。(マニュアルより先に動かしてみるタイプの人間)

バイナリの取得

[root@centos8-prometheus:/usr/local/src/grafana]# wget https://dl.grafana.com/oss/release/grafana-6.7.2.linux-amd64.tar.gz

-- 解凍して適当に整形して
[root@centos8-prometheus:/usr/local/src/grafana]# ll
合計 63580
-rw-r--r--.  1 root root    11343  42 17:48 LICENSE
-rw-r--r--.  1 root root      108  42 17:48 NOTICE.md
-rw-r--r--.  1 root root     2799  42 17:48 README.md
-rw-r--r--.  1 root root        5  42 17:49 VERSION
drwxr-xr-x.  2 root root       96  42 17:49 bin
drwxr-xr-x.  3 root root      107  42 17:49 conf
drwxr-xr-x.  5 root root       61  419 16:18 data
-rw-r--r--.  1 root root 65075053  42 18:11 grafana-6.7.2.linux-amd64.tar.gz
drwxr-xr-x. 14 root root      188  42 17:49 public
drwxr-xr-x.  2 root root     4096  42 17:49 scripts
drwxr-xr-x.  3 root root       23  42 17:49 tools

Unitファイルの作成

この辺りは割とてきとーです。

[root@centos8-prometheus:/usr/local/src/grafana]# cat /etc/systemd/system/grafana.service 
[Unit]
Description=Grafana
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/src/grafana/bin/grafana-server -homepath=/usr/local/src/grafana -config=/usr/local/src/grafana/conf/defaults.ini
Restart=on failure

[Install]
WantedBy=multi-user.target

Grafanaの起動とログイン

[root@centos8-prometheus:/usr/local/src/grafana]# systemctl start grafana
[root@centos8-prometheus:/usr/local/src/grafana]# systemctl status grafana
● grafana.service - Grafana
   Loaded: loaded (/etc/systemd/system/grafana.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-04-19 16:27:12 JST; 2s ago
 Main PID: 6427 (grafana-server)
    Tasks: 7 (limit: 5030)
   Memory: 18.2M
   CGroup: /system.slice/grafana.service
           └─6427 /usr/local/src/grafana/bin/grafana-server -homepath=/usr/local/src/grafana -config=/usr/local/src/grafana/conf/defaults.ini

起動できました。

ブラウザからGrafanaにアクセスできるか確認してみます。 デフォルトポートは3000です。

f:id:koreshiki-nanno:20200419171057p:plain

青を基調としたイケてる画面ですね!

ログインにはdefaults.iniに記載されているadmin_useradmin_passwordが必要です。デフォルトはどちらもadminです。

データソースの追加

ログイン出来たら今度はデータソースを追加する必要があります。

f:id:koreshiki-nanno:20200419171814p:plain

f:id:koreshiki-nanno:20200419172558p:plain

トップ画面の[Add data source]から[Prometheus]を選択します。

f:id:koreshiki-nanno:20200419174205p:plain

ちなみに最近MySQLをデータソースとして使えることを知りました。(古のバージョンにはなかった気がします) これもいつか試してみたいですね!

[HTTP]

URLにはデータソース(今はPrometheus)のURLを入れます。 AccessはServerでいいと思います。

[Auth]

Basicに設定してGrafanaにログインするためのユーザー名とパスワードを設定します。

最後にこの画像からでは分かりませんが、一番下のSave & Testを押して、[Data source is working]と表示されれば準備完了です。

Dashboardの追加

データを取得出来たらいよいよダッシュボードを作っていきます。

f:id:koreshiki-nanno:20200419181715p:plain

f:id:koreshiki-nanno:20200419182345p:plain

ホーム画面から[Build a dshboard]→[Add Query]を選択します。

f:id:koreshiki-nanno:20200419182418p:plain

あとはQueriesからグラフを描画するときに利用するクエリ(このクエリはPromQLと呼ばれます)の追加・編集、Visualizationからグラフの見た目、Generalからグラフのタイトルなど詳細を決めていくことができます。

PromQL

Grafanaでグラフを作成するときに苦労するのは、どのようなクエリで、そしてどのようなメトリクスを取得するか、ということではないでしょうか。

このあたりは僕も現在進行形で非常に苦労しています…

どのメトリクスがどのような意味を持つのかはGrafanaから少し確認できます。(grafana version 6.7.2, node_exporter version 0.18.1で確認)

f:id:koreshiki-nanno:20200424010441p:plain

exporterによっては表示されないこともあるかもしれません。 その場合は対象exporterのGitHubから確認したほうがいいでしょう。

MySQLとかであれば大抵SHOW GLOBAL VARIABLES, SHOW GLOBAL STATUSからの結果ですのでMySQLの公式リファレンスを参照することをお勧めします。

最後に

そんなわけで今回はGrafanaを構築してデータを可視化してみました。

ぜひぜひ自分専用のイケてるダッシュボードを作りましょう~

f:id:koreshiki-nanno:20200424005527p:plain

参考にさせていただいたサイト