Google Dataflowを使って、Google Cloud StorageからElasticに直接データをインジェストする

blog-thumb-cloud-gcp.png

Elasticは本日、GCS(Google Cloud Storage)からElastic Stackへ、Google Dataflowを使ったダイレクトなデータインジェストのサポートを開始したことを発表しました。このサポート開始に伴い、開発者やSREs(Site Reliability Engineers)、セキュリティアナリストなどのユーザーは、Google Cloud Consoleを数回クリックするだけでGCSのデータをElastic Stackにインジェストできるようになりました。

Google Cloud上のアプリやインフラが生成するログとイベントの格納にGCSを使用し、トラブルシューティングや監視、セキュリティ上の異常の確認にはElastic Stackを使用するという開発者やSRE、セキュリティアナリストは少なくありません。 GoogleとElasticはこの2つのソリューションのエクスペリエンスを強化する目的で協働し、GCSに格納されたログとイベントをElastic Stackにインジェストする、ストレスフリーで使いやすい手法の提供を実現させました。この手法はデータパイプラインアーキテクチャーをシンプル化するほか、運用上の手間を省き、トラブルシューティングの所要時間を短縮できるといったメリットをユーザーにもたらします。Google Cloud Consoleを数回クリックするだけで済み、カスタムのデータプロセッサーを作成する必要はありません。

本ブログ記事では、Google Dataflowを使って、エージェントを経由せずにGCSからElastic Stackにデータをインジェストする方法をご紹介します。

GCSからのデータインジェストを最適化する

GCS(Google Cloud Storage)は、Amazon S3やAzure Blob Storageともよく比較されるオブジェクトストレージソリューションです。GCSはその魅力的な価格から、ストリーミング要件のないデータのバックアップやアーカイブ、データ分析に加え、シンプルなWebページやアプリのホスティングにもよく利用されています。開発者やSREs、セキュリティアナリストなどのユーザーは、バックアップやアーカイブのためにアプリやインフラのログとイベントをGCSに格納することがあります。また、Google Cloudユーザーのデータパイプラインが、すべてのデータをElastic Stackにインジェストする設定にはなっていないケースもあります。つまり、データの一部がGCSに格納され、後で必要な場合に分析できるように保持されているというケースです。

ログがGCSに送信された後、そのログをElasticのようなサードパーティの分析ソリューションにインジェストするメソッドは、ユーザーが決定しなくてはなりません。もしGoogle Cloud Consoleを数回クリックするだけでGCSのデータを直接Elastic Stackにインジェストすることができれば、理想的なメソッドとなります。実は現在、Apache Beamをベースとする人気のサーバーレスデータ処理製品、Google Dataflowのドロップダウンメニューからこのメソッドを実行することが可能になっています。Dataflowは実質的に、GCSからログとイベントをElastic Stackにプッシュします。現時点でサポートされているファイル形式はCSVですが、Elasticは近日、JSONのサポート開始を予定しています。

以下に、データインジェストのフローを示します。このインジェストフローは、Elastic CloudのElastic Stackから、Google Cloud MarketplaceのElastic Cloud、セルフマネージド環境まで、すべてのユーザーに共通です。

Dataflow
 

使い始める

GCSからのインジェスト機能を理解する最適な方法は、事例のデモンストレーションを見ることです。ここからは事例として、アメリカ地質調査所から取得した地震データを分析してみます。アメリカ地質調査所はリアルタイムの地震情報と震度統計データを提供しています。先月、アメリカ地質調査所がマグニチュード2.5以上を観測した地震のCSVファイルを使用します。このファイルの冒頭5行は次のようになっています。どのようなデータなのか、おおよそのイメージを掴めると思います。

データファイル
 

Google Cloud Consoleの[Dataflow]ページで、[GCS to Elasticsearch template](GCS-Elasticsearchテンプレート)を選択します。このテンプレートは、次のいずれかを使用してJSONドキュメント向けのスキーマを作成します。

  1. Javascript UDF(該当する場合)
  2. JSON schema(該当する場合)
  3. CSVヘッダー*(デフォルト)

UDFまたはJSONスキーマのいずれかに該当する場合は、CSVヘッダーに代わってそれを使用します。

クラウドステージング
 
フォームの最初のフィールドに、GCS内のファイルの場所を示すパラメーターを入力します。 Cloud IDは、下の画像に示すようにElastic Cloud UIで見つけることができます。API Keyは、Create API key APIを使って作成することができます。
API Key
 

Elasticsearch index]に、データの読み込み先となるインデックス名を指定します。この例では[quakes]インデックスを使用しています。

クラウドステージング
 

Run Job](ジョブを実行)をクリックすると、GCS からElasticsearchへ地震データのインジェストが始まります。Google Cloud Consoleしか操作していないところがポイントです。

ここまで来たらKibanaを開き、数分程度でインデックスパターンを作成し、可視化を始めることができます。

Kibana
 

地震データのプレゼンテーションを表示したサンプルダッシュボード

地震マップ
 

まとめ

Elasticはユーザーが望む場所で、ユーザーが望むメソッドで、より簡単にプロダクトを実行できるよう継続的な開発を進めています。このGoogle Cloudとのスムーズな統合機能は、その最新の事例です。Elastic CloudはElastic Stackのバリューを拡張し、ユーザーがより多くのことを、より高速に実行できるよう支援します。Elastic Cloudは、Elasticのプラットフォームから優れたエクスペリエンスを引き出す最高の方法です。Google Cloud Marketplaceまたは、elastic.coにアクセスして、ElasticをGoogle Cloudで使い始めることができます。