Google Dataflowを使って、Google Cloud StorageからElasticに直接データをインジェストする
![blog-thumb-cloud-gcp.png](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfda9e7f7ea98808b/5ffe114c7f3df4662710b340/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](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd90012c091d42541/6153d1381ea20372528ad145/elastic-blog-googlecloudstorage.png)
使い始める
GCSからのインジェスト機能を理解する最適な方法は、事例のデモンストレーションを見ることです。ここからは事例として、アメリカ地質調査所から取得した地震データを分析してみます。アメリカ地質調査所はリアルタイムの地震情報と震度統計データを提供しています。先月、アメリカ地質調査所がマグニチュード2.5以上を観測した地震のCSVファイルを使用します。このファイルの冒頭5行は次のようになっています。どのようなデータなのか、おおよそのイメージを掴めると思います。
![データファイル](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltee0956af688e6fe1/6153d926947b692d209b8056/elastic-blog-googlecloudstorage-2.png)
Google Cloud Consoleの[Dataflow]ページで、[GCS to Elasticsearch template](GCS-Elasticsearchテンプレート)を選択します。このテンプレートは、次のいずれかを使用してJSONドキュメント向けのスキーマを作成します。
- Javascript UDF(該当する場合)
- JSON schema(該当する場合)
- CSVヘッダー*(デフォルト)
UDFまたはJSONスキーマのいずれかに該当する場合は、CSVヘッダーに代わってそれを使用します。
![クラウドステージング](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltcd90690751ac2244/6153d1ba69b7947c1b3b015e/elastic-blog-googlecloudstorage-3.png)
![API Key](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte21c59b2ec7701c2/6153d1f469b7947c1b3b0166/elastic-blog-googlecloudstorage-4.png)
[Elasticsearch index
]に、データの読み込み先となるインデックス名を指定します。この例では[quakes
]インデックスを使用しています。
![クラウドステージング](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8a8a4be6a7b18686/6153d2609d27cf7da4ba3685/elastic-blog-googlecloudstorage-5.png)
[Run Job](ジョブを実行)をクリックすると、GCS からElasticsearchへ地震データのインジェストが始まります。Google Cloud Consoleしか操作していないところがポイントです。
ここまで来たらKibanaを開き、数分程度でインデックスパターンを作成し、可視化を始めることができます。
![Kibana](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt78b1de0b29478be0/6153d2b769b7947c1b3b016a/elastic-blog-googlecloudstorage-6.png)
地震データのプレゼンテーションを表示したサンプルダッシュボード
![地震マップ](https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt829d13fc1905e169/6153d2f21ea20372528ad14f/elastic-blog-googlecloudstorage-7.png)