【可視化ツール】GrafanaとKibanaを比べてみた

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/899f5b3c-6a94-3598-06cb-b379728cdddc.png)

全ての組織において、データの情報を得るためにデータ分析とモニタリングのソリューションが必要となってきます。GrafanaとKibanaは、データ分析、可視化、アラートのための最も人気のあるオープンソースのダッシュボードの2つであり、この記事ではこの２つのツールを比較していこうと思う。

#Grafana
Grafanaは、ダッシュボードを作成、探索、共有するための、パワフルで機能豊富なオープンソースのデータ可視化ツールです。Grafanaの用途としては、サーバ/アーキテクチャの健全性ステータス監視、可視化、ビジネスデータやメトリクスの分析などがあります。個人でもビジネスでも、ビジネス・メトリクスの分析やインフラストラクチャの監視を行うための強力なツールです。[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Grafana%20vs.%20Kibana)の[無料トライアル](https://www.hostedgraphite.com/accounts/signup-metricfire/?signup=japan&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Grafana%20vs.%20Kibana)にサインアップして、Grafanaのダッシュボードを作成してみましょう。

Grafanaの詳細については、[Grafanaを基礎から解説 〜実際に導入までしてみる〜](https://qiita.com/TomoEndo/items/bbf10dbd60c6b85ccee0)や、[GrafanaをElasticsearchに統合 (やり方を解説)](https://qiita.com/TomoEndo/items/1ebc30c9613e2fb7a22d)についての記事をご覧ください。

#### Grafanaの利点

- 豊富なテンプレートとプラグイン
- Prometheus、Graphite、ElasticSearch、OpenTSDB、InfluxDBなど、様々なデータソースをサポート
- アラートや通知を完全にカスタマイズ可能なダッシュボード
- ユーザー制御・認証機構を内蔵
- スナップショット、データアノテーションなどの多様な機能セット

#### Grafanaの欠点

- データの保管と収集をGrafana以外で行わければならない

#Kibana

KibanaはオープンソースのElasticSearchで使用されているデータナビゲーション・可視化アプリケーションです。Kibanaは、ユーザがElasticStackを制御し、そこから送られてくるデータを可視化するための方法です。Kibanaは「ELK stack」という常套句のKで表され、EはElasticsearch、LはLogstashを表します。

KibanaとELKスタックについては、彼らの[ウェブサイト](https://www.elastic.co/products/kibana)や[GitHub](https://github.com/elastic/kibana)で詳しく知ることができます。

#### Kibanaの利点

- データを可視化し、データ間の関係性を探るための独自の方法を作成する能力
- 追加のコーディングやインフラは必要ありません。
- 強力な異常検知システム
- PDFおよびCSV形式をサポートしたデータ共有およびエクスポート機能
- 効率的で使いやすいシングルインターフェースUI

#### Kibanaの欠点

- データのエクスポート機能が制限されている
- ElasticStackの制限の影響を受ける

# ログとメトリクスの違い
Grafanaの主な用途は、メトリクスの分析と可視化です。メトリクスとは、メモリ使用量、システムのCPU、I/O、ディスク使用量などの経時変化を表す時系列データのことです。一方、KibanaはElasticsearch上で動作するため、様々なデータソースからのログメッセージの分析に利用されることが多いです。

ログは、システムイベントをリストアップして記述するシステム生成のデータセットです。イベントごとに異なるデータセットがログメッセージに含まれています。ログは特定のイベントに焦点を当てていますが、メトリクスは一定の時間間隔でのシステムの指標となります。

Kibanaを使ってログを分析したり、フォレンジック、セキュリティ、開発などログに依存した用途に利用するのは簡単です。Grafanaにもログ解析の機能はありますが、Kibanaほど開発されていません。Grafanaにはログ情報を提供するデータソース（Elastic、Influx、Lokiなど）用のログパネルがありますが、通常はメトリックベースのグラフと併用してダッシュボードの情報の深さを拡張します。

#初期設定とシステム構成
KibanaもGrafanaも、インストールや設定が非常に便利で使い勝手が良いとされています。KibanaはOSのインストールオプションがより多様化していますが、どちらのダッシュボードも、Dockerなどの主要なプラットフォームだけでなく、Windows、Mac、Linuxなどの主要なOSすべてに対応しています。どちらの製品もオープンソースプロジェクトから直接構築することができます。

Grafanaダッシュボードは、.ini設定ファイルを使用して設定することができます。Grafanaの設定は、Kibanaの設定よりもはるかに簡単なプロセスです。また、環境変数を使用して設定オプションを変更することもできます。Grafanaデータソースのドキュメントは非常に簡潔で具体的です。各データソースには、それぞれ独自の設定方法が記載されています。ユーザーは、Grafanaダッシュボードに http://localhost:800/ からアクセスできます。

KibanaはElasticsearchデータソースのみを使用するため、Kibanaダッシュボードを使用するには、Kibanaと同じバージョンのElasticsearchインスタンスが必要です。ユーザーは、構文依存のYAML設定ファイルを使用してダッシュボードを設定することができます。ローカルホスト上のダッシュボードのインスタンスで作業している間、ユーザーは.yml設定ファイルをURLで更新する必要があります。

#データソース
Grafanaは、Graphite、Prometheus、Elasticsearch、PostgreSQL、MySQL、InfluxDB、AWS Cloudwatchとの組み込み統合を含め、30以上のデータソースをサポートしています。プラグインを使用して、さらに多くのデータソースにアクセスすることができます。また、データソースの機能や能力に応じてカスタマイズされた様々なデータソースに対応した専用のクエリエディタを提供しています。

KibanaはElasticsearchデータのみをサポートし、他のデータソースはサポートしていません。しかし、機能が豊富で、Elasticsearchとの連携がよくできており、Elasticsearchソースに対して優れたデータ検索・探索機能を提供します。

#ユーザー認証
Grafanaには、ユーザー制御および認証メカニズムが組み込まれています。LDAP（Lightweight Directory Access Protocol）や外部SQLサーバーなど、ダッシュボードへのアクセスを制限して制御することができます。

Grafanaでは、ユーザーは組織を作成することができ、異なるプロジェクトのグループやチームを作成することができ、組織のすべてのメンバーは、自分の組織のダッシュボードにアクセスすることができます。各メンバーは、さまざまな権限を持つ特定の役割を持っています。また、ユーザーは固有のAPIキーを設定することができます。

一方、Kibanaのダッシュボードは、オープンにアクセスできるようにすることができます。ダッシュボードは組織内に存在する必要はありません。デフォルトのユーザー認証オプションを備えているだけでなく、ダッシュボードの設定にも柔軟性を持たせています。ダッシュボードのアクセス制御を変更するために、さまざまなセキュリティプラグインが用意されています。最も一般的に使用されているのは、Elastic社の商用プラグインであるX-Packです。これはELKアドオンのバンドルで、ダッシュボードのアクセス制御と認証機能をユーザーに提供します。ユーザーは、Kibanaと互換性のある人気のセキュリティプラグインであるSearchGuardもチェックしてみてください。

#アラート
Grafanaにはアラートエンジンが内蔵されており、ユーザーはアラートをコントロールすることができます。ユーザーは、任意の時系列指標に合わせて、パーソナライズされたアラートを作成することができます。ダッシュボード・パネルに条件付きルールを適用することで、アラートを設定することができます。

Grafanaのアラートエンジンでは、データの利用不能や接続の失敗などの特殊なケースにも対応できます。アラートが発生すると、ユーザーが選択したエンドポイントに通知を送信し、ユーザーは、電子メール、Slack、PagerDuty、さらにはカスタムのWebhookに通知を受け取ることができます。

反対に、Kibanaは、すぐに使えるアラートシステムが付属していません。ユーザーはElastalertを実装したり、Logz.ioのようなホスティングされたELKスタックを使用したり、X-Packプラグインを使用したりすることができます。ユーザはAPIやウォッチャーと呼ばれる関数を通してElasticsearchでアラートを設定することができる。ウォッチャーは定期的にクエリを実行し、その結果に基づいて特定のタスクを実行する関数です。

#クエリ

Grafanaのインターフェースは、時系列データの分析に最適化されているため、時間の経過とともに変化するものを監視するのに最適です。他の種類のデータの探索には最適化されておらず、Kibanaと比較して、データの検索や精緻化の機能は少ないです。しかし、Grafanaには、様々なデータソースからデータを検索するためのクエリエディタが用意されています。異なるデータソースには、特定のデータソースの要件に合わせてカスタマイズされた独自のクエリエディタが付属しています。クエリ エディタは、変数とあらかじめ設定された値のリストを使用して、データの可視化をフィルタリングします。

クエリとデータ探索は、Kibanaの最も強力な機能の1つと考えられています。ユーザーは、Lucene 構文、Elasticsearch Query DSL、Kuery (experimental - Kibana 6.3 で初めて導入された) など、さまざまな方法でクエリを実行することができます。

Kibanaのユーザーは、ユーザーデータを格納し、その結果をメインログメニューに時系列で表示するElasticsearchインデックスを検索し、クエリを行うことができます。LuceneとElasticsearch Query DSLは強力なクエリ言語ですが、初めてのユーザーには直感的ではないかもしれません。これらの言語の学習曲線は急なものです。

KibanaのユーザーインターフェースにはElasticsearchクエリの検索ボックスが付属しており、HTTPリクエストに基づいてログをクエリすることで生成されるチャート、マップ、グラフをサポートしています。ユーザーは結果を提供するクエリを保存することもできる。ユーザーは、追加の検索パラメータの助けを借りて、提示されたデータのセットを絞り込むことができます。

#データの可視化機能
GrafanaとKibanaはどちらも強力な可視化機能を持つことで知られています。Grafanaのダッシュボードは非常に機能が豊富で汎用性が高いです。Grafanaのビジュアライゼーションはパネルと呼ばれ、ダッシュボード上にパネルが表示されます。ユーザーは、複数のパネルを持つダッシュボードを作成することができ、各パネルには異なるデータソースが表示されます。

Grafanaは、時系列、ヒストグラム、ゲージ、ヒートマップ、テキストパネル、単一統計、表など、多くのビジュアライゼーションタイプをサポートしています。また、さまざまなデータタイプやソースに対応した、すぐに使えるダッシュボードの膨大なエコシステムも用意されています。また、Grafanaは、データのフォーマットや単位に基づいた軸の自動スケーリングなど、かなりの柔軟性を提供しています。

また、Kibanaは豊富な可視化ツールも提供しています。これらの可視化ツールには、円グラフ、時系列、ジオマップ、マークダウン可視化、時系列グラフ、データテーブル、単一メトリック可視化などがあります。Kibanaの可視化ツールにはタグクラウドもありますが、これはGrafanaではサポートされていません。

どちらのダッシュボードにも、データの可視化のための多数のカスタマイズオプションが用意されており、ユーザーは自分なりの方法でデータを探索することができます。例えば、パネルの色、ラベル、軸のサイズ、X軸とY軸などをカスタマイズすることができます。Grafanaは、折りたたみ可能な行やパネルエディタなど、Kibanaと比較してカスタマイズ機能の幅が広くなっています。

#コミュニティ
どちらのツールにも、ユーザーや開発者の大規模なコミュニティがあります。Grafanaには、1000人以上の貢献者による23000件以上のコミットがあります。Grafana は Github コミュニティでは優位に立っていますが、StackOverflow の質問数は Kibana よりもはるかに少ないです。このプロジェクトはGitHub上で32,000以上のスターと6,000以上のフォークを持っています。Grafanaは開発者によって非常に積極的に管理されており、2000以上の課題と100以上のPull Requestがあります。

一方、Kibanaは450人以上の貢献者による29,000件以上のコミットがあります。Kibanaのコミュニティは活発ですが、Grafanaよりは小規模です。このプロジェクトには13000以上のスターと6000以上のフォークがGitHub上にあり、非常に生産的な開発チームがあり、現在5000以上の課題と400以上の有効なPull Requestsがあります。Kibanaの親会社であるElasticは、より大きなコミュニティを持ち、より良いリソースを提供しているため、Kibanaはビジネスでの利用にはより効率的です。コミュニティはカンファレンスやミートアップなどで非常に活発に活動しています。

#用途・機能
どちらのツールもデータの可視化と分析のための素晴らしい機能を持っていますが、主に異なる目的で使用されています。GrafanaはInfluxDBやGraphiteなどの時系列データソースを使用してビジネスメトリクスを分析し、ELKスタックの一部であるKibanaはログデータの探索に使用される。組織は、監視インフラの一部として両方を使用していることさえあります。

Grafanaは監視ツールで、主にインフラストラクチャとデータの監視に最適化されています。様々なアプリケーション・メトリック・ストレージ・データ・ソースをサポートし、監視とインスタント・リアルタイム・アラートを提供します。時系列データを効果的に使用して分析、パターンの特定、データに基づく予測を行うことができます。小規模な組織でも大規模な組織でも、データ監視に最適です。

一方、Kibanaは、ログデータの探索と分析を容易にするために設計されたデータ可視化ツールです。ログの分析に焦点を当て、既存の生ログデータからメトリクスを抽出する方法をユーザーに提供します。

Kibanaのユーザーは、収集したログに関連するフィルタをクエリして適用することで、可視化を取得し、独自の方法で表示することができます。また、データパイプラインを作成するための様々なプラグインを提供するサーバーサイドフレームワークであるLogstashと一緒にKibanaを使用することもできます。Elasticsearchを使ってデータを管理するネットワークを持つあらゆる規模の組織にとって、素晴らしい選択であるでしょう。

#まとめ
GrafanaとKibanaは、それぞれ異なる目的で使用され、特定のタイプのデータを扱うことを目的としていますが、どちらもどのような組織にとっても優れた分析・可視化ツールです。GrafanaとKibanaは、あらゆる規模の組織で、さまざまな種類のデータソースを使用して監視インフラストラクチャを構築する場合に最適なツールです。[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Grafana%20vs.%20Kibana)の[無料トライアル](https://www.hostedgraphite.com/accounts/signup-metricfire/?signup=japan&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Grafana%20vs.%20Kibana)を利用して、すぐにGrafanaダッシュボードの作成を始めましょう。Grafanaの機能についてご質問がある場合は、お気軽に[デモをご予約](https://calendly.com/metricfire-chatwithus/chat?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Grafana%20vs.%20Kibana)ください。