Google Dataflowを使って、Google Cloud StorageからElasticに直接データをインジェストする
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、セルフマネージド環境まで、すべてのユーザーに共通です。
使い始める
GCSからのインジェスト機能を理解する最適な方法は、事例のデモンストレーションを見ることです。ここからは事例として、アメリカ地質調査所から取得した地震データを分析してみます。アメリカ地質調査所はリアルタイムの地震情報と震度統計データを提供しています。先月、アメリカ地質調査所がマグニチュード2.5以上を観測した地震のCSVファイルを使用します。このファイルの冒頭5行は次のようになっています。どのようなデータなのか、おおよそのイメージを掴めると思います。
Google Cloud Consoleの[Dataflow]ページで、[GCS to Elasticsearch template](GCS-Elasticsearchテンプレート)を選択します。このテンプレートは、次のいずれかを使用してJSONドキュメント向けのスキーマを作成します。
- Javascript UDF(該当する場合)
- JSON schema(該当する場合)
- CSVヘッダー*(デフォルト)
UDFまたはJSONスキーマのいずれかに該当する場合は、CSVヘッダーに代わってそれを使用します。
[Elasticsearch index
]に、データの読み込み先となるインデックス名を指定します。この例では[quakes
]インデックスを使用しています。
[Run Job](ジョブを実行)をクリックすると、GCS からElasticsearchへ地震データのインジェストが始まります。Google Cloud Consoleしか操作していないところがポイントです。
ここまで来たらKibanaを開き、数分程度でインデックスパターンを作成し、可視化を始めることができます。
地震データのプレゼンテーションを表示したサンプルダッシュボード