背景
KibanaはElasticsearch、GrafanaはGraphite or InfluxDBを主にバックエンドとしてWebブラウザで動作するダッシュボードツールです。GrafanaがKibanaを参考に作られたそうなので、見た目などは似ており、任意のWebサーバで動作する(python -m SimpleHTTPServer
でもOK)ように作られています。これの関係でGrafanaを試してみたところ、やはりKibanaも試してみようという意欲がわき1日ぐらいいじってみたのでその比較です。それぞれKibana 3.1.1、Grafana 1.8.1を使用してみました。使い込みが足りずに機能が把握できていないかもしれないので、ツッコミ歓迎です。
差がでていると思われる部分
インタラクティブ性
KibanaはQueryとFilteringという2つの項目がインタラクティブに入力、結果を表示できるように作られています。Queryは系列を作るための条件で、Filteringは集計の対象となるデータの選択に使われます。例えば以下の例では系列として項目client
が10.0.0.5
、10.0.0.135
、10.0.0.136
という3つを作成しており、(画像中では見えませんが)時刻範囲でFilteringすることで過去6時間分のデータだけを見ています。QueryやFilteringを入力すると、それが設定されたグラフや集計結果に即座に反映されます。
一方、Grafanaはこのようなインタラクティブな入力はダッシュボードにはありません。各グラフの設定時にクエリを設定すればそれが即時に反映されますが、ここのグラフごとに設定するため何かを調べるために試行錯誤を繰り返すのには向いていないと考えられます。
しかし、その一方で静的に閲覧情報を表示する場合にはGrafanaの方が良い場合もあると考えられます。Kibanaは系列の設定が画面全体のグラフに適用させられるためQueryを都度変更して何かを調査するのには向いていますが、多様なクエリを複雑に組み合わせて使うのには不向きだと思われます。大は小を兼ねる使い方はできそうですが、インタラクティブに設定変更できるという良さがいかせなくなると考えられます。
プレゼンテーションの豊富さ
表現方法の豊かさで言うとKibanaが圧倒的に有利です。Grafanaが基本的に時系列のグラフを表示するのに比べて、時系列のグラフ、全体の割合(円グラフなど)、値の集計(top Nなど)のようなグラフ、さらに地図などもサポートされています。
Elasticsearchのサンプルより
また、KibanaはグラフだけではなくログそのものをJSONのような形式で表示したり、必要な項目を選んでテーブルで一覧表示させることができます。ログの中身をつぶさに調べたいときにとても有用と考えられます。
一方、Grafanaが提供しているのは時系列グラフだけになります。折れ線グラフ、面グラフ、棒グラフなどは選択できますが、基本的にX軸は時間軸になるようなグラフになるようです。
まとめ
およその用途を考えると、Kibanaはシステムログの閲覧や調査、Grafanaはよりダッシュボード的な使い方が向いているのではないかと考えられます。
端的に言ってGrafanaの方がKibanaに比べて機能が少ない反面、とてもシンプルに作られています。グラフを作成する際にはinfluxDBのクエリ構造を理解していないといけないといけないという制約はありますが、SQL likeなのでエンジニアの人は比較的容易に理解できると思われます。また、クエリの入力補助も充実しているため、使いやすくできています。
一方でKibanaは機能が多いため、最初どのように使えばいいかでかなり迷いました。利用目的が時系列的なグラフを表示したいというのであれば、Grafanaの方がとっつきやすいでしょう。