Fastly のリアルタイム ストリーミング ログを BigQuery で分析する方法
Google Cloud Japan Team
編集部注 : 今回は Fastly からの寄稿です。Fastly のエッジ クラウド プラットフォームは、コンテンツ配信、ストリーミング、セキュリティ、負荷分散などの領域で従来よりも優れたサービスをグローバルに提供するウェブ アプリケーションを支えています。また、Google Cloud Platform(GCP)上で構築されたアプリケーションの応答時間を短縮するだけでなく、ログを Cloud Storage と BigQuery にストリーミングして深く分析できるようにしています。本稿では、この統合と、お客様の環境でのセットアップ方法について解説します。
私たち Fastly と Google Cloud のコラボレーションは、GCP のパワーと Fastly エッジ クラウド プラットフォームのスピードおよび柔軟性を結びつけました。私たちは全世界 14 の戦略拠点で Google との間にプライベートな相互接続を設けており、GCP と Fastly を併用するお客様の環境では Google サービスとストレージの応答時間が劇的に向上しています。
そしてこのたび、私たちは Google BigQuery との統合を発表しました。これで、Google Cloud Storage と BigQuery に Fastly のログをリアルタイムでストリーミングでき、お客様は無限とも言える膨大なエッジ データを分析することが可能になります。
もしあなたが Fastly のお客様なら、人口統計や地理的な位置などの側面に応じて、ウェブ サイトの月単位のページ ビューや利用状況に関する実用的な知見を獲得できます。このデータがあれば、接続の問題の解決、パフォーマンス チューニングが必要な構成領域の特定、サービス停止の原因の特定、エンドユーザーのエクスペリエンスの向上などを図れるのです。
さらに BigQuery テーブルを使用して、Fastly のログ データと、Google Analytics、Google Ads などのデータやセキュリティ、ファイアウォール ログを結合することもできます。Fastly のリアルタイム ログを Cloud Storage に保存すれば、冗長性を確保することも可能です。実際、多くのお客様が Fastly から Cloud Storage に直接ログをバックアップしています。
Fastly POP は GCP ベースのアプリケーションに直結し、BigQuery にログをストリーミングします
それでは、統合のセットアップ方法と、Cloud Storage および BigQuery による Fastly ログの分析について説明しましょう。
Fastly-BigQuery 統合のセットアップ
Fastly サービスのロギング エンドポイントとして BigQuery を追加する前に、Cloud Storage アカウントを登録して Cloud Storage バケットを作成する必要があります。この準備を済ませたら、以下の手順でセットアップを行ってください。1. Google Cloud サービス アカウントの作成
BigQuery は、サードパーティ アプリケーションの認証のためにサービス アカウントを使用します。サービス アカウントの作成方法については、Google のサービス アカウント認証情報生成のページを参照してください。サービス アカウントを作成するときは、鍵タイプに JSON を指定してください。
2. private_key と client_email の入手
サービス アカウントを作成したら、サービス アカウントの JSON ファイルをダウンロードします。このファイルには、BigQuery サービス アカウントの認証情報が格納されています。ファイルを開き、private_key とclient_email の内容をメモしてください。
3. BigQuery API の有効化(無効にしている場合)
Fastly ログを Cloud Storage バケットに送るには、GCP の API Manager で BigQuery API を有効にする必要があります。
4. BigQuery データセットの作成
BigQuery API を有効にしたら、次の手順で BigQuery データセットを作ってください。
- BigQuery にログインします。
- サイドバーのアカウント名の横にある矢印をクリックし、Create new dataset を選択します。
Create Dataset ウィンドウが表示されます。
- Dataset ID フィールドにデータセットの名前(たとえばfastly_bigquery)を入力し、OK ボタンをクリックします。
5. BigQuery テーブルの追加
BigQuery データセットを作成したら、BigQuery テーブルの追加が必要です。テーブル スキーマの作成方法には次の 3 つがあります。
- BigQuery のウェブ インターフェースを使ってスキーマを編集する。
- BigQuery のウェブ インターフェースのテキスト フィールドを使ってスキーマを編集する。
- 既存のテーブルを利用する。
私たちとしては、新しいテーブルを作り、ユーザー インターフェースを使ってスキーマを作成する方法をお勧めしますが、テーブル スキーマのテキスト表現を編集してもよいでしょう。実際、テキスト バージョンとユーザー インターフェース バージョンはいつでも切り替えられます。
なお、Fastly ユーザー インターフェースで使うロギングのフォーマットの例と、それに対応するテキスト形式の BigQuery スキーマを後述していますので、お役立てください。重要なのは、Fastly から送るデータが BigQuery テーブルのスキーマと一致していることです。一致していない場合は、データが壊れたり、エラー メッセージなしで格納されなかったりします。
BigQuery のドキュメントに従い、サイドバーのデータセット名の横にある矢印をクリックし、Create new table を選択します。


Create Table ページが表示されます。


- Source Data セクションで Create empty table を選択します。
- Table name フィールドにテーブル名を入力します(たとえば、logs)。
- BigQuery ウェブ サイトの Schema セクションで、インターフェースを使ってフィールドを追加し、スキーマを完成させます。そして Create Table ボタンをクリックします。
6. ロギング エンドポイントとしての BigQuery の追加
次の手順に従い、ロギング エンドポイントとして BigQuery を追加します。
- Fastly の『Setting up remote log streaming』ガイドに目を通してください。
- BigQuery のロゴをクリックし、BigQuery エンドポイント作成ページを開きます。
- Create a BigQuery endpoint の各フィールドを次のように指定してください。
■ Log format フィールドには BigQuery に送るデータを入力します。詳細は『Log streaming : Google BigQuery』ガイドの Example format セクションをご覧ください。
■ Email フィールドには BigQuery アカウントの client_email アドレスを入力します。
■ Secret key フィールドには BigQuery アカウントの秘密鍵を入力します。
■ Project ID フィールドには GCP プロジェクトの ID を入力します。
■ Dataset フィールドには BigQuery データセットの名前を入力します。
■ Table フィールドには BigQuery テーブルの名前を入力します。
■ Template フィールドには、テーブルのテンプレート サフィックスとして使う strftime 互換文字列を入力します(オプション)。
- Create をクリックし、新しいロギング エンドポイントを作成します。
- Activate ボタンをクリックし、構成変更をデプロイします。
BigQuery に送信する JSON オブジェクトのフォーマット例
BigQuery に送るデータは、JSON オブジェクトとしてシリアライズする必要があります。また、JSON オブジェクトのフィールドは、すべてテーブルのスキーマの文字列に対応していなければなりません。JSON では入れ子状のデータを格納できます(たとえば、オブジェクトのキーに対応するバリューは他のオブジェクトになることがあります)。次に示すのは、BigQuery にデータを送るためのフォーマット文字列の例です。
BigQuery スキーマの例
上に示したフォーマット例に対応するテキスト形式の BigQuery スキーマは、次のようなものになります。BigQuery テーブルを作るときは、“Edit as Text” をクリックし、この例をペーストします。
今すぐお試しを!
以上で、Fastly のログがリアルタイムで Cloud Storage と BigQuery に送信されるようになります。BigQuery ではログの分析が簡単になり、あなたのアプリケーションとエンドユーザーとのやり取りがより深く理解できるでしょう。質問があれば、私たち Fastly にお問い合わせください。すでに Fastly をご利用なら、Fastly と GCP をどのように使っているかをぜひ教えてください。まだご利用でなければ、無料でお試しいただけます。こちらでサインアップしてください。
* この投稿は米国時間 8 月 17 日、Fastly の VP of Product Strategy である Simon Wistow によって投稿されたもの(投稿はこちら)の抄訳です。
- By Simon Wistow, VP of Product Strategy, Fastly