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


目次

1.はじめに
      1.1 Grafana
      1.2 Elasticsearch
      1.3 GrafanaとElasticsearchの融合
2.セットアップ
3.まとめ

1.はじめに

1.1 Grafana

Grafanaは非常に用途の広い視覚化(グラフ化)ツールです。 さまざまなデータソースからデータを読み取り、グラフ、ゲージ、世界地図、ヒートマップなど、さまざまな視覚化オプションでプロットできます。 MetricFire無料トライアルでいつでもお試しください。

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/_/elasticsearch

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

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

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

docker-compose up -dを使用してこのdocker-composeファイルを実行した後、http:// localhost:9200にアクセスして、Elasticsearchが稼働していることを確認します。 出力は次のようになります。

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

http:// localhost:1358にアクセスすると、Dejavuのインターフェースが表示されます。

次に、サンプルデータを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およびlogstash-2015.05.18インデックスに接続することにより、データのロードを確認できます。

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

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

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

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

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

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

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

3. まとめ

GrafanaがElasticsearchデータソースにシームレスに接続し、クエリを通じて優れた視覚化を提供することを確認しました。 今すぐMetricFire無料トライアルに参加して、Elasticsearchデータの送信を開始してください。 また、さらに詳しく知りたいという方は、デモを予約して、最適な監視ソリューションについて直接お問い合わせください。