Compute@Edge ログストリーミング:Google BigQuey

Fastly の Compute@Edge サービスのリアルタイムログストリーミング機能では、ログファイルを Google が管理するエンタープライズデータ・ウェアハウスのBigQueryに送信することができます。

注意

Fastly ではサードパーティのサービスに関する直接のサポートは行っておりません。詳細については、Fastly サービスの利用規約をご参照ください。

前提条件

Fastly の Compute@Edge サービスのログエンドポイントとして BigQuery を追加する前に以下を行う必要があります。

サービスアカウントを作成する

BigQuery はサービスアカウントを使用して第三者アプリケーションの認証を行います。新しいサービスアカウントを作成するには、Google Cloud のドキュメントの指示に従ってください。サービスアカウントを作成する際には以下のことにご留意ください。

  • サービスアカウントは、Fastly のログで使用されるテーブルに書き込むため、Big Query Data Editor のロールが割り当てられている必要があります。BigQuery Data Editor のロールに割り当てられているデフォルトの権限の詳細については、Google のドキュメントにある BigQuery のロールに関するセクションを参照してください。

    サービスアカウント作成パネル

  • サービスの秘密鍵のペアを作成する際に、鍵のタイプをJSONに設定します。

Fastly でキーを保存することを回避するために、Google サービスアカウントの偽装を使用ことを選択した場合、この同じサービスアカウントを使用することができます。Google IAM ロール作成に関するガイドでは、この機能の詳細を説明しています。

秘密鍵とクライアントメールの取得

BigQuery サービスアカウントを作成する際、JSON ファイルがお客様のコンピューターに自動的にダウンロードされます。このファイルには、BigQuery サービスアカウントの認証情報が含まれています。ファイルを開き、 private_keyclient_emailフィールドの値を書き留めておいてください。

BigQuery API を有効にする

Fastly のログを BigQuery テーブルに送信するには、Google Cloud Platform の API Managerで BigQuery API を有効にする必要があります。

BigQuery データセットを作成する

BigQuery API を有効化した後、以下の指示に従って BigQuery データセットを作成してください。

  1. Cloud Console でBigQuery のページを開きます。
  2. Explorer パネルで、データセットを作成するプロジェクトを選択します。
  3. 詳細パネルで、Create Datasetをクリックします。
  4. Dataset ID フィールドにデータセットの名前を入力します(例:fastly_bigquery)。
  5. Create dataset ボタンをクリックします。

BigQuery テーブルを追加する

BigQuery データセットを作成した後、BigQuery テーブルを追加する必要があります。テーブルのスキーマを作成するには、4つの方法があります。

  • BigQuery の Web インターフェイスを使用してスキーマを編集する。
  • BigQuery の Web インターフェイスのテキストフィールドを使用する。
  • 既存のテーブルを使用する。
  • スキーマが自動的に検出されるようにテーブルを設定します。
注意

スキーマが自動的に検出されるようにテーブルを設定すると、予想外の結果がもたらされる場合があります。

BigQuery テーブルを追加するには、以下の手順に従ってください。

  1. Cloud Console でBigQuery のページを開きます。
  2. Explorer パネルでプロジェクトを展開し、前に作成した BigQuery データセットを選択します。
  3. Source セクションの Create table from メニューから Empty table を選択します。Create table ダイアログが表示れます。

BigQuery テーブル作成のページ

  1. Table name フィールドにテーブルの名前を入力します (例:logs)。
  2. BigQuery Web サイトのSchemaセクションでインターフェイスを使用してフィールドを追加し、スキーマを完成させます。詳細についてはスキーマの例のセクションを参照してください。
  3. Create Table ボタンをクリックします。

ログエンドポイントとして BigQuery を追加する

これらの手順に従って、Google BigQuery をログエンドポイントとして追加してください。設定の一環として、機密情報の保存を回避するために、Google IAM ロールベースのサービスアカウントの偽装の設定を選択できます。この機能の詳細については、Google IAM ロールの作成ガイドをご覧ください。

  1. RustAssemblyScript、および JavaScript で書かれた Compute@Edge コードでログ記録を実行する方法に関する詳細については Fastly の開発者向けドキュメントをご覧ください。
    ヒント

    RustAssemblyScript、および JavaScript で書かれた Compute@Edge コードでログ記録を実行する方法に関する詳細については Fastly の開発者向けドキュメントをご覧ください。

  2. Google BigQuery のCreate endpointボタンをクリックします。Create a BigQuery endpoint ページが表示されます。

  3. 以下の要領で Create a BigQuery endpointページの各フィールドに入力してください。

    • Name フィールドに、Compute@Edge コードに指定した名前を入力します。例えば、Rust コードの例では、名前は my_endpoint_name です。
    • Access Method セクションで、ログ配信の目的で Fastly が Google リソースにアクセスする方法を選択します。User Credentials または IAM Role を選択します。
    • ユーザーUser Credentialsを選択した場合、以下のフィールドを入力します。
      • Email フィールドに、BigQuery サービスアカウントに関連付けられた client_email アドレスを入力します。
      • Secret key フィールドに、BigQuery サービスアカウントに関連付けられた private_key の値を入力します。
      • Project ID フィールドには、Google Cloud Platform プロジェクトの ID を入力します。
      • Dataset フィールドに、BigQuery データセットの名前を入力します。
      • Table フィールドに、BigQuery テーブルの名前を入力します。
      • Templateフィールドに、テーブルのテンプレートサフィックスとして使用する strftimeと互換性のある文字列を任意で入力します。
    • IAM ロールを選択した場合、以下のフィールドを入力します。
      • サービスアカウント名フィールドに、Google IAM サービスアカウントの偽装を設定する際に選択したサービスアカウントのメールアドレスの名前を入力します。
      • Project ID フィールドには、Google Cloud Platform プロジェクトの ID を入力します。
      • Dataset フィールドに、BigQuery データセットの名前を入力します。
      • Table フィールドに、BigQuery テーブルの名前を入力します。
      • Templateフィールドに、テーブルのテンプレートサフィックスとして使用する strftimeと互換性のある文字列を任意で入力します。
  4. Create ボタンをクリックすると、新しいログエンドポイントが作成されます。
  5. Activate ボタンをクリックして設定変更をデプロイします。

推奨されるログ形式

BigQuery に送信されたデータは JSON オブジェクトとしてシリアル化され、JSON オブジェクト内のすべてのフィールが、テーブルのスキーマ内のフィールドにマッピングされる必要があります。JSON にはネストされたデータが入っていることがあります (例、オブジェクトのキーを値が別のオブジェクトである場合があります)。以下は、BigQuery にデータを送信するためのフォーマット文字列の例です。

1{
2 "client_ip": "127.0.0.1",
3 "timestamp": "2022-05-17 15:09:24.037547 UTC",
4 "geo_country": "USA",
5 "geo_city": "boston",
6 "host": "curiously-selected-polecat.edgecompute.app",
7 "url": "https://curiously-selected-polecat.edgecompute.app/",
8 "request_method": "GET",
9 "request_protocol": "https",
10 "request_referer": "",
11 "request_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
12 "response_status": "200",
13 "response_reason": "OK",
14 "response_body_size": "1234",
15 "fastly_server": "IAD"
16}

スキーマの例

上記のフォーマット例の場合、BigQuery のスキーマは以下のようになります。

client_ip:STRING,timestamp:TIMESTAMP,geo_country:STRING,geo_city:STRING,host:STRING,url:STRING,request_method:STRING,request_protocol:STRING,request_referer:STRING,request_user_agent:STRING,response_status:STRING,response_reason:STRING,response_body_size:STRING,fastly_server:STRING

翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合はお問い合わせください : support@fastly.com