ログストリーミング: Google Cloud Storage
- English
- 日本語
Fastly のリアルタイムログストリーミング機能では、Google Cloud Storage (GCS) にログファイルを送信することができます。GCS は、Google のインフラにてデータを保存・アクセスするために使用されるオンラインファイルストレージサービスです。GCS を使用する利点のひとつに、Google BigQuery を使用してログファイルを分析できることが挙げられます。
Fastly ではサードパーティのサービスに関する直接のサポートは行っておりません。詳細については、Fastly のご利用規約をご覧ください。
前提条件
Fastly サービスのログエンドポイントとして GCS を追加する前に、以下が必要です。
- GCS アカウントの登録
- Google のWebサイトにてバケットとサービスアカウントを作成します。
- Google IAM サービスアカウントの権限借用やキーベースのアクセスを使用して、Fastly がログを送信するために使用するアクセスメソッドを設定します。
- Google Cloud Storage JSON API を有効化します。
GCS バケットを作成する
ログを格納するために、新しい GCS バケットを作成または既存のバケットを利用することもできます。後で必要になりますので、バケットの名前を記録しておいてださい。GCS バケットの作成方法については、バケット作成に関する Google のガイドをご参照ください。
サービスアカウントを作成する
Google Cloud Platform (GCP) は、Google Cloud リソースへのサードパーティのアプリケーション認証とロールベースのアクセスのためにサービスアカウントを使用します。新しいサービスアカウントを作成するには、Google Cloud のドキュメントの指示に従ってください。
Storage Object Creator
ロールをサービスアカウントに割り当てなければなりません。 詳細については、Storage オブジェクトロールを参照してください。サービスアカウントへのアクセスを設定する
Fastly は、GCS バケットのトピックにログを書き込む場合、アクセスを必要とします。Google IAM サービスアカウントの権限借用やキーベースのアクセスを使用して、Fastly が GCS バケット にログを送信できるようにすることができます。
Google IAM サービスアカウントの権限借用の設定
Fastly でキーを保存するのを避けるために Google IAM サービスアカウントの権限を借用することを選択した場合、GCS をログエンドポイントとして追加する際に、サービスアカウント名とプロジェクト ID を指定する必要があります。サービスアカウント ID は、サービスアカウントのメールアドレスの @
の前にあり、プロジェクト ID が直後に続きます。例えば、サービスアカウントのメールアドレスが my-name@projectid.iam.gserviceaccount.com
の場合、サービスアカウント ID は my-name
で、プロジェクト ID は projectid
です。Google IAM ロールの作成に関するガイドでは、この機能の設定について詳しく説明しています。
キーベースのアクセスの設定
キーベースのアクセスの使用を選択した場合、サービスアカウントの認証情報の生成に関する Google のガイドを参照してください。
キーベースのアクセスを設定する場合、JSON 形式を選択する必要があります。設定を保存すると、作成したばかりの GCS サービスアカウントの認証情報を含む JSON ファイルがコンピューターにダウンロードされます。テキストエディターでファイルを開き、private_key
と client_email
を記録しておきます。
Google Cloud Storage JSON API を有効にする
Fastly ログが GCS バケットに送信するには、Google Cloud Storage JSON API を有効にする必要があります。詳しい情報は、Google の API を有効にする方法をご参照ください。
ログエンドポイントとして GCS を追加
次の指示に従って、ログエンドポイントとして GCS を追加してください。設定の一環として、機密情報の保存を回避するために、Google IAM ロールベースのサービスアカウントの権限借用の設定を選択できます。この機能の詳細については、Google IAM ロールの作成ガイドをご覧ください。
- Deliver サービス
- Compute サービス
リモートログストリーミングの設定に関するガイドをご確認ください。
- Google Cloud Services エリアで、Create endpoint をクリックします。
- Create a Google Cloud Storage (GCS) endpoint フィールドに、以下のように記入します。
Name フィールドに分かりやすいエンドポイントの名前を入力します。
Placement セクションでは、生成される VCL にログコールが配置される場所を選択します。有効な値は Format Version Default そして None です。詳細については、ログ配置の変更に関するガイドをご覧ください。
Log format フィールドには、ログ形式に使用する Apache 形式の文字列や VCL 変数を任意で入力します。詳細については、形式例のセクションをご覧ください。
(オプション) Timestamp format フィールドに、ログファイルのタイムスタンプ形式を入力します。デフォルトでは
strftime
互換文字列です。詳細については、ログファイルの書き込み先の変更に関するガイドを参照してください。- Email フィールドには、Google のWebサイトで作成したサービスアカウントに関連付けられた JSON ファイルに記載されている
client_email
アドレスを入力します。 - Bucket name フィールドに、ログを保存する GCS バケットの名前を入力します。
- Access Method セクションで、ログ配信の目的で Fastly が Google リソースにアクセスする方法を選択します。有効な値は、User Credentials と IAM Role です。
- User Credentials を選択した場合は、以下のフィールドに入力します。
- Email フィールドには、Google のWebサイトで作成したサービスアカウントに関連付けられた JSON ファイルに記載されている
client_email
アドレスを入力します。 - Secret key フィールドには、Google の Webサイトで作成したサービスアカウントに関連付けられた JSON ファイルに記載されている
private_key
の値を入力します。JSON の改行エスケープ処理は Fastly が行いますので、削除する必要はありません。
- Email フィールドには、Google のWebサイトで作成したサービスアカウントに関連付けられた JSON ファイルに記載されている
- IAM Role を選択した場合、以下のフィールドに入力します。
- Service Account Name フィールドに、Google IAM サービスアカウントの権限借用を設定する際に入力したサービスアカウント名から作成されたサービスアカウント ID を入力します。サービスアカウント ID は、サービスアカウントのメールアドレスの
@
より先の文字列です。例えば、サービスアカウントのメールアドレスがmy-name@projectid.iam.gserviceaccount.com
の場合、サービスアカウントの ID はmy-name
になります。 - Project ID フィールドには、Google Cloud Platform プロジェクトの ID を入力します。
- Service Account Name フィールドに、Google IAM サービスアカウントの権限借用を設定する際に入力したサービスアカウント名から作成されたサービスアカウント ID を入力します。サービスアカウント ID は、サービスアカウントのメールアドレスの
(オプション) PGP public key フィールドに、Fastly がログファイルをディスクに書き込む前に、ログファイルを暗号化するために使用する PGP 公開鍵を入力します。秘密鍵で復号化することによってのみ、コンテンツを読み取ることができます。PGP 公開鍵は PEM (Privacy-Enhanced Mail) 形式でなければなりません。詳細については、ログの暗号化に関するガイドをご覧ください。
(オプション) Period フィールドに、ログファイルのローテーションの頻度をコントロールするための間隔 (秒単位) を入力します。ローテーションにより、1つのファイルオブジェクトが完了すると、新たなファイルオブジェクトが作成されます。以前に作成されたファイルオブジェクトが削除されることはありません。デフォルトでは
3600
秒に設定されています。
- Advanced options をクリックし、以下のようにフィールドに入力します。
(オプション) Path フィールドには、ファイルを保存するバケット内のパスを入力します。パスの末尾にスラッシュを付けます。このフィールドを空にすると、ファイルはバケットのルートパスに保存されます。詳細については、ログファイルの書き込み先の変更に関するガイドを参照してください。
Select a log line format のセクションで、ログメッセージのログライン形式を選択します。詳細については、ログライン形式の変更に関するガイドをご覧ください。
(オプション) Compression フィールドで、ログファイルに適用する圧縮形式を選択します。詳細については、ログ圧縮オプションの変更に関するガイドをご覧ください。
Create をクリックして新規のログエンドポイントを作成します。
Activate をクリックして設定への変更をデプロイします。
フォーマットの例
以下に示すのは、GCS にデータを送信する書式指定文字列の例です。書式指定文字列の詳細については、こちらをご覧ください。
{ "timestamp": "%{strftime(\{"%Y-%m-%dT%H:%M:%S%z"\}, time.start)}V", "client_ip": "%{req.http.Fastly-Client-IP}V", "geo_country": "%{client.geo.country_name}V", "geo_city": "%{client.geo.city}V", "host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V", "url": "%{json.escape(req.url)}V", "request_method": "%{json.escape(req.method)}V", "request_protocol": "%{json.escape(req.proto)}V", "request_referer": "%{json.escape(req.http.referer)}V", "request_user_agent": "%{json.escape(req.http.User-Agent)}V", "response_state": "%{json.escape(fastly_info.state)}V", "response_status": %{resp.status}V, "response_reason": %{if(resp.response, "%22"+json.escape(resp.response)+"%22", "null")}V, "response_body_size": %{resp.body_bytes_written}V, "fastly_server": "%{json.escape(server.identity)}V", "fastly_is_edge": %{if(fastly.ff.visits_this_service == 0, "true", "false")}V}