【徹底解説】 GrafanaをElasticsearchに統合する方法

![5dd7953812a2f01e8968f5b7_Grafana and Elasticsearch.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/a5295043-6335-b811-8379-f182cfe22b16.jpeg)
##目次
1.はじめに
      1.1 Grafana
      1.2 Elasticsearch
      1.3 GrafanaとElasticsearchの融合
2.セットアップ
3.まとめ

# 1.はじめに
##1.1 Grafana
Grafanaは非常に用途の広い視覚化（グラフ化）ツールです。 さまざまなデータソースからデータを読み取り、グラフ、ゲージ、世界地図、ヒートマップなど、さまざまな視覚化オプションでプロットできます。 [MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Using%20Grafana%20with%20Elasticsearch%20(tutorial))の[無料トライアル]()でいつでもお試しください。

## 1.2 Elasticsearch
Elasticsearchは、データを分析および検索するためのオープンソースの分散データストアです。 Elasticsearchは、JSONベースのドキュメント構造を使用して、データを格納およびインデックス付けします。 これにより、Inverted Indexと呼ばれるデータ構造を使用して、格納されたデータの非常に高速な検索を可能にします。 多くの企業がElasticsearchを使用して、データベース全体の検索を強化しています。

## 1.3 GrafanaとElasticsearch融合
Elasticsearchはイベントデータとメトリクスを格納するため、それをGrafanaで視覚化するということに関して言えばElasticsearchとGrafanaの相性は抜群です。

この記事では、GrafanaとElasticsearchインスタンスを統合するプロセスを段階的に説明し、いくつかのクエリを実行していく過程をお見せします。

#2.セットアップ
以下の公式のDockerイメージを使用して、GrafanaとElasticsearchのテスト環境をセットアップしていきます。 

[https://hub.docker.com/r/grafana/grafana/](https://hub.docker.com/r/grafana/grafana/)
[https://hub.docker.com/_/elasticsearch](https://hub.docker.com/_/elasticsearch)

Grafanaは視覚化に最適なツールですが、Elasticsearchには、すぐにブラウザでデータを表示するためのツールは付属していないため、Grafanaを使用してElasticsearchにあるデータを視覚化するには、追加のツールが必要になります。  RESTベースのインターフェースを使用してデータと繋げることが必要となりますので、最初のステップはElasticsearchのWeb UIを取得することです。


ElasticsearchでWebインターフェースを取得するには、Dejavuと呼ばれるオープンソースのElasticsearch UIを使用します。 そのDockerイメージは次の場所にあります。

[https://hub.docker.com/r/appbaseio/dejavu/](https://hub.docker.com/r/appbaseio/dejavu/)

以下の写真は、Grafana、Elasticsearch、Dejavuを起動する非常にシンプルなdocker-composeファイルです。

[https://gist.github.com/denshirenji/54ede2907f3ac9d62d4e57d5f9b89b36#file-docker-compose-file-to-start-grafana-elasticsearch-dejavu-yaml](https://gist.github.com/denshirenji/54ede2907f3ac9d62d4e57d5f9b89b36#file-docker-compose-file-to-start-grafana-elasticsearch-dejavu-yaml)

docker-compose up -dを使用してこのdocker-composeファイルを実行した後、[http：// localhost：9200](http://localhost:9200/)にアクセスして、Elasticsearchが稼働していることを確認します。 出力は次のようになります。
<img width="524" alt="5dd7956381d3e9fa63e96df7_J2at7oPO5ITqBjakcyBTEliYRPEJXP42odUK3hGrsUOmpqWC3_TVLr1F0HjAjUncQoG7Iwcyus3FXpnfBx2cGcF6eobGfpEj-f2mo5yDLvX8kIV5PDeLM2UMQdJ-v7WXQRlq1VDx.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/a4589c58-857a-60f4-21d8-5774e9dc1478.png">

また、[http：// localhost：3000](http：// localhost：3000)にアクセスして、Grafanaが稼働していることを確認します。 デフォルトの資格情報はadmin/adminです。

![5dd79563b9c85c3a4f7d029a_XsaixeZJNj6rP_-M_PZ6lqBp42Au1lra1zS01FTOgFiQqap0ZjV7fIx5OOyOUMi6AP5O2T0UOh_tmfeX0E0aLAaHtm4RcKTu1YAkPgjmMe80wiQ_hz-fknYY5K6lp7lLxFnk2VwO.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/732f91bc-f099-664f-3d90-b7d72dad77df.png)

[http：// localhost：1358](http：// localhost：1358)にアクセスすると、Dejavuのインターフェースが表示されます。
![5dd7956312a2f0487968f5dc_SRUX4sYUGBuLbxAot8WxQCkx8ha9iDRkQM6KCVJb5e6L_HQf3vT6qDgA3Doww0DMxyZ6q1AOT18kHOMGHReyEM8uBV_sBl_yfMJdp1hpmeLVS3eV2a51ZOofEt4pKnCN1BgN4oym.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/9f85514b-bf3a-da49-c96d-db491a1d2418.jpeg)

次に、サンプルデータをElasticsearchにインポートします。 Elasticsearchの公式サイトの手順に従って、logs.jsonデータをElasticsearchに読み込みます。

具体的には、次のコマンドを実行します。

1. エラスティックサーバーからlogs.jsonlファイルをダウンロードします。

          curl -O https://download.elastic.co/demos/kibana/gettingstarted/7.x/logs.jsonl.gz

2. ファイルを開きます。

          gunzip logs.jsonl.gz

3. 最後に、Elasticsearchインスタンスにアップロードします。

          curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl

Dejavu UIを[http://127.0.0.1:1358](http://127.0.0.1:1358)およびlogstash-2015.05.18インデックスに接続することにより、データのロードを確認できます。

![5dd795633f3c6904de5ff449_x0gsvL8FBDoVfylg2uoieYZsISRx3o6rPxsS9_vWtRCtO_9XqWHZmBOvLLqcvBV_-nTvmpNuQEOblNmiIQmUbbP4LkgGdkAvaavQHohFdPJiA-XlKtFSaxRvuWOXE7HA_rVDL0XJ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/e343a0e6-e172-133c-376e-c93b66406a6e.png)

さて、ここから楽しい部分です。 ElasticsearchデータソースをGrafanaに接続し、その上にビジュアライゼーションを作成していきます。
まずは、[http：// localhost：3000](http：// localhost：3000)でGrafanaにアクセスし、Elasticsearchタイプのデータソースを追加します。

注：この記事で説明されているようにdockerを使用している場合、URLは[http：// elasticsearch：9200](http：// elasticsearch：9200)になります。 これは、ブラウザーのフロントエンドではなく、バックエンド（アクセス：サーバー）からGrafanaにElasticsearchに接続させるためです。 Grafanaコンテナーの場合、Elasticsearchの場所は[http：// elasticsearch：9200](http：// elasticsearch：9200)であり、予想どおり[http://127.0.0.1:9200](http://127.0.0.1:9200)ではありません。

バージョンは7.0+であり、時間フィールド名を@timestampとして定義します。

![5dd79563be2670a0912e4450_xyi5KvhrKLCSQGICcxKjTfoHSFYd5xfj9Wvh_N2fXiQZSJ9qM3NVjUdBWxL6btV8PC3obT3Mm6fbFLhtkWGshhzEeHjCphzQzla_-YaZ27-_UJ946CUwhCmLF7mX549PkW14pzvN.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/0f73ab45-02e3-2be1-0927-7164450c6b28.png)

次に、単純なGrafanaダッシュボードを作成して、シンプルなグラフを追加します。 これはかなり簡単です。 トリッキーな部分は、データソースの構成とクエリの提供です。

ログデータから平均マシンRAMを視覚化します。 クエリドロップダウンボックスで、データソースとしてElasticsearchを選択して、次に示すように、平均メトリックとしてmachine.ramを使用します。

![5dd795634e896ac62b4884b3_znQ6WdKPvRpJV_I22MooyluU5TO7GntiN1aWjqelfdqNskNMXGiDPjn2B9YQsLpnFOAxuYPOJtbT7Sp_B00jJmILqXPH4JxhUD3ADhdTyI78zL8xNhgUn8nPhVJmV02k7SoVp0Zt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/26ca29d1-eb9a-db01-515d-750408a07b4f.png)

視覚化を保存すると、右上のボックスでカスタムの時間範囲が選択されます。 これは、私たちの2015年5月のログデータが含まれているためです。この時間範囲に構成すると、次の視覚化が得られます。

![5dd795634e896a59e84884b4_1gH6P6_1ON2Uij5zlOzzfQi1RVbgka3BDOaPof8YBnGNPQ1oRZ64-xPQuXRNr4EBcIzLFtBg5BfZgZEBTSCYtDC-4MzURpjySpcVUPhbVIBQNF0GbUhN8BMkalkWrNsOejb7durU.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/35fb248f-ff20-3051-bee2-0b2bd16b1a53.png)

同様に、Average Bytesの視覚化を追加すると、Grafanaダッシュボードは次のようになります。

![5dd79564be2670534c2e4451_6LRPyK0leu6CjHBo2mjon6kRvz8EBcmhAFPiWxEnPd0J5itjTD5mFscMNFwuGPQNLWmbnSgjB2ZKRwezHY0LfTKahfV2j7VQn3EoVRxEQeb2zi4Yp-caN7wVP8iLPK3BvgOSk16z.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/03bedc83-6b93-b1e0-ca46-7a3e7bf915a8.png)

#3. まとめ

GrafanaがElasticsearchデータソースにシームレスに接続し、クエリを通じて優れた視覚化を提供することを確認しました。 今すぐ[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Using%20Grafana%20with%20Elasticsearch%20(tutorial))の[無料トライアル](https://www.hostedgraphite.com/accounts/signup-metricfire/?signup=japan&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Using%20Grafana%20with%20Elasticsearch%20(tutorial))に参加して、Elasticsearchデータの送信を開始してください。 また、さらに詳しく知りたいという方は、[デモを予約](https://calendly.com/metricfire-chatwithus/chat?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=Using%20Grafana%20with%20Elasticsearch%20(tutorial))して、最適な監視ソリューションについて直接お問い合わせください。