Edited at

10分で理解するGrafana

More than 1 year has passed since last update.


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でGrafanaを起動

$ docker run -d -p 3000:3000 grafana/grafana



Grafana で可視化する

Dashboard というのを作成し Dashboard ごとに可視化パーツを設定していくことになります

可視化の手順は基本的に以下だけです

1. Dashboard を作成

1. UIパーツを追加

1. データ取得のクエリをセット

クエリを考えるのに多少頭を使う必要があるくらいで、あとはサクサク試しながら追加していくことができます

一度セットアップした 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 使用率は以下のクエリで取得できます


CPU使用状況

100 - (avg by (instance) (irate(node_cpu{mode="idle"}[5m])) * 100)


ぶっちゃけクエリの意味はあんまりわかっていません

クエリの意味の解説はコチラへ!

https://www.robustperception.io/understanding-machine-cpu-usage/


これが Grafana で作ったダッシュボードだ!

色々と設定をするとこんな感じのダッシュボードが出来上がります

Prometheus で用意されているデフォルトのダッシュボードと比べると雲泥の差ですね

以上、快適なダッシュボードライフを!