Grafana とは
Grafana は Grafana Labs が公開しているログ・データ可視化のためのツールです
可視化ツールとしては kibana とほぼ同じようなものです
Grafana も kibana も、DB に保存されたログに対してリアルタイムにクエリを投げてデータを表示することができ、
表示する期間の長さや時間帯を変えたり、パーツ毎に特定のノードだけのデータを表示したりインタラクティブに可視化を操作することができます
Grafana は複数のデータベースに対応しており現時点では以下に対応しています
- Graphite
- Prometheus
- Elasticsearch
- InfluxDB
- OpenTSDB
- MySQL
- AWS Cloudwatch
kibana は elasticsearch のみ対応しています
UI の機能は kibana の方が高機能な気がしますが、Grafana でもプラグインで様々な機能・UIが公開されていますし自分で開発することもできます
https://grafana.com/plugins
ただ、リソース監視やアプリケーションのスタッツ監視という観点で考えれば、そこまでリッチな可視化は必要ない場合がほとんどだと思うので、どちらを使っても大きな違いはないはずです
Prometheus で取得したデータをカッコよく可視化するためにも Grafana を使うことができます
Grafana インストール
公式ドキュメント に沿ってインストールしてもらえばOKですが、Docker を利用するのが一番簡単です
データの保存を考えずにとりあえず動かすならこれだけ!
$ docker run -d -p 3000:3000 grafana/grafana
Grafana で可視化する
Dashboard というのを作成し Dashboard ごとに可視化パーツを設定していくことになります
可視化の手順は基本的に以下だけです
- Dashboard を作成
- UIパーツを追加
- データ取得のクエリをセット
クエリを考えるのに多少頭を使う必要があるくらいで、あとはサクサク試しながら追加していくことができます
一度セットアップした Dashboard は保存できますし、設定を Json 形式で export できるのでコードとしてバックアップを取っておくことも可能です
利用できる UIパーツ
デフォルトでは以下のパーツが用意されています
Graph と Singlestat があればとりあえず困ることはないでしょう
Heatmap ってやつがなかなかイケてる見た目をしています
Grafana のプラグインでいろいろな UI パーツが公開されているので、
込み入った表示がしたければそういうものを利用するのもありです
github のコミットの履歴のグラフみたいなプラグインとかもありました
https://github.com/NeoCat/grafana-cal-heatmap-panel
クエリの設定 (Prometheus の場合)
利用するバックエンドによってクエリの詳細は違いますが、Prometheus を利用した場合の例を少しだけ
10分で理解する Prometheus で紹介した node_exporter を利用するとマシンのCPU、メモリ、ディスクなどのリソース情報を取得できます
空きメモリを取得するには以下をセットします
node_memory_MemAvailable
各マシンの CPU 使用率は以下のクエリで取得できます
100 - (avg by (instance) (irate(node_cpu{mode="idle"}[5m])) * 100)
ぶっちゃけクエリの意味はあんまりわかっていません
クエリの意味の解説はコチラへ!
https://www.robustperception.io/understanding-machine-cpu-usage/
これが Grafana で作ったダッシュボードだ!
色々と設定をするとこんな感じのダッシュボードが出来上がります
Prometheus で用意されているデフォルトのダッシュボードと比べると雲泥の差ですね
以上、快適なダッシュボードライフを!