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

Elasticは本日、Google Cloudとの継続的なパートナーシップを通じてリリースされた最新の開発成果について発表しました。このリリースに伴い、開発者やSREs(Site Reliability Engineers)、セキュリティアナリストなどのユーザーはGoogle Cloud Consoleで数回クリックするだけの操作で、Google Pub/SubのデータをElastic Stackにインジェストできるようになりました。具体的には、Google Cloud Audit、VPC Flow、ファイアウォールなどのGoogle Cloudサービスからくるイベントとログを、Google Dataflowテンプレートを活用してElastic Stackに簡単にストリーミングすることが可能になっています。このテンプレートはデータパイプラインアーキテクチャーをシンプル化するほか、運用上の手間を省き、トラブルシューティングの所要時間を短縮できるといったメリットをユーザーにもたらします。

アプリの開発やインフラの立ち上げにGoogle Cloudを使用し、トラブルシューティングや監視、セキュリティに関する異常の特定にはElastic Stackを使用するという開発者やSRE、セキュリティアナリストは少なくありません。GoogleとElasticは、Google CloudサービスのアプリやインフラからElasticにログやイベントをインジェストする、ストレスフリーで使いやすい手法を提供するために協働してきました。その結果、データシッパーを一切インストールすることなく、Google Cloud Consoleを数回クリックするだけでこうしたインジェストを行うことが可能になりました。   

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

余分な手間を省く

Pub/Subは、Google Operations(旧Stackdriver)やGoogle Cloudのサービスを用いて開発されたアプリ、またストリーミングデータ統合パイプラインを活用するその他のユースケースからのデータストリーミングに使われる、人気のサーバーレス非同期メッセージングサービスです。Google Cloud AuditやVPC Flow、ファイアウォールのログをサードパーティの分析ソリューション(例:Elastic Stack)にインジェストする場合、はじめにGoogle Operationsにログをシッピングし、その後Pub/Subに送る必要があります。  ログがPub/Subに送信された後、Google Pub/Subに格納されたメッセージをサードパーティーの分析ソリューションにシッピングする際のインジェストメソッドは、Google Cloudユーザーが決定しなくてはなりません。

GoogleとElasticを併用するユーザーに人気のオプションとしては、Google Compute Engine VMにFilebeat、Elastic Agent、またはFluentdのいずれかをインストールし、そのデータシッパーを使ってPub/SubからElastic Stackにデータを送信するという方法があります。しかしこの方法では、VMのプロビジョニングやデータシッパーのインストールに伴ってプロセスや管理の手間が生じます。この手順を省き、Pub/SubからElasticに直接データをインジェストする仕様は多くのユーザーに役立ちます。Google Cloud Consoleを数回クリックするだけで完了するとなれば、なおさらです。この新しい方法は現在、Google Dataflowのドロップダウンメニューから実行することが可能になっています。

データインジェストを最適化する

Google Dataflowは、Apache Beamをベースとするサーバーレス非同期メッセージングサービスです。Google DataflowをFilebeatに代えて使うと、Google Cloud Consoleからログを直接シッピングすることができます。そこでGoogleとElasticのチームは、Pub/SubからElasticにログとイベントをプッシュする、設定不要のDataflowテンプレートを共同開発しました。このテンプレートは、従来Filebeatが担っていたデータ形式変換などの軽負荷な処理をサーバーレスな手法で実行します。ユーザーはFilebeatをこのテンプレートに置換するにあたり、既存のElasticsearchインジェストパイプラインに変更を加える必要はありません。          

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

blog-gcp-integration-pubsub-1.png

使い始める

このセクションでは、Dataflowを使って、Elastic StackでGCP Audit Logsの分析を始める方法をステップバイステップのチュートリアルで説明します。

監査ログには、ユーザーのGoogle Cloudアカウントに生じた運用上の変更について、「どこで、どのように、いつ」を問う質問の回答を導くために役立つ情報が含まれます。Pub/Subテンプレートを使うと、わずか数秒でGCPからElasticsearchに監査ログをストリーミングし、インサイトを収集することができます。 

はじめにKibanaのWeb UIからElastic GCP統合機能をそのままインストールします。この統合機能には、事前構築済みダッシュボードやインジェストノード設定、インジェストする監査ログを最大活用する上で役立つその他のアセットも搭載されています。 

Dataflowテンプレートの設定に入る前に、Google Cloud ConsoleでPub/Subのトピックとサブスクリプションを作成する必要があります。Google Cloud Consoleには、Google Operations Suiteからログを送信することが可能です。

blog-gcp-integration-pubsub-2.png

次にGoogle Cloud Consoleへ移動し、Dataflowジョブを設定します。 

Dataflowプロダクト内で[Create job from template](テンプレートからジョブを作成する)をクリックした後、Dataflowテンプレートドロップダウンメニューで[Pub/Sub to Elasticsearch](ElasticsearchへのPub/Sub)を指定します。

blog-gcp-integration-pubsub-3.png

ElasticsearchのCloud IDやBase64-encoded API Keyを含む、必要なパラメーターを入力します。このチュートリアルでは監査ログをストリーミングするので、ログタイプのパラメーターとして[audit]を追加します。Cloud IDは、下の画像に示すようにElastic Cloud UIで見つけることができます。API Keyは、Create API key APIを使って作成することができます。

blog-gcp-integration-pubsub-4.png

blog-gcp-integration-pubsub-5.png

[Run Job](ジョブを実行する)をクリックして、Dataflowがテンプレートの実行を完了するまで待機します。数分程度かかります。お気づきのように、この手順はGoogle Cloud Consoleの外部に移動せずに進めることができ、エージェントを管理したりする必要はありません。

最後に、Kibanaを開いてパースしたログと、[Logs GCP]ダッシュボードの可視化を確認します。

blog-gcp-integration-pubsub-6.png

まとめ

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