このドキュメントでは、Cloud Trace を使用して Secure Web Proxy の分散リクエスト トレースを構成する方法について説明します。
コンセプト、主なメリット、アーキテクチャの詳細については、分散トレースの概要をご覧ください。
始める前に
- 初期設定の手順を完了します。
プロジェクトで Compute Engine API、Network Services API、Cloud Trace API を有効にします。
gcloud services enable \ compute.googleapis.com \ networkservices.googleapis.com \ cloudtrace.googleapis.comアクティブな Secure Web Proxy ゲートウェイ インスタンスがデプロイされていることを確認します。詳細については、Secure Web Proxy インスタンスをデプロイするをご覧ください。
HTTP レベルの分散トレース スパンを生成し、HTTPS リクエストの W3C トレース コンテキスト ヘッダーを伝播するには、Secure Web Proxy ゲートウェイで TLS インスペクションを有効にする必要があります。
ロールと権限
テレメトリー ポリシーの構成とトレースの表示に必要な権限を取得するには、次の Identity and Access Management(IAM)ロールを付与するよう管理者に依頼してください。
- テレメトリー ポリシーを作成、更新、削除する: ネットワーク サービス管理者(
roles/networkservices.admin)または Compute ネットワーク管理者(roles/compute.networkAdmin) - Google Cloud コンソールでトレース スパンを表示して分析する: Cloud Trace ユーザー(
roles/cloudtrace.user) トレース スパンを Trace にエクスポートするには、次のサービス アカウントに Cloud Trace エージェント ロール(
roles/cloudtrace.agent)があることを確認します。- Compute Engine サービス エージェント:
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com - ネットワーク セキュリティ サービス エージェント:
service-PROJECT_NUMBER@gcp-sa-networksecurity.iam.gserviceaccount.com - クライアント アプリケーションがスパンを生成または伝播する場合のクライアント仮想マシン(VM)サービス アカウント
- Compute Engine サービス エージェント:
テレメトリー ポリシー構成スキーマ
YAML ファイルでテレメトリー ポリシーを定義するには、次のスキーマを使用します。
name: projects/PROJECT_ID/locations/REGION/telemetryPolicies/POLICY_NAME
telemetryTarget:
resources:
- "//networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/GATEWAY_NAME"
description: "OPTIONAL_DESCRIPTION"
tracingConfiguration:
samplingRate: SAMPLING_RATE
parentBasedSampling:
enabled: true
次の表に、テレメトリー ポリシーのフィールドの説明を示します。
| フィールド | タイプ | 説明 |
|---|---|---|
name |
文字列 | テレメトリー ポリシーの固有識別子。 |
telemetryTarget.resources |
文字列のリスト | このポリシーが適用される Secure Web Proxy ゲートウェイのリソース URL。ゲートウェイは、ポリシーと同じリージョンに存在する必要があります。
形式:
または、略称形式 |
description |
文字列 | 省略可。このフィールドには、人間が読める形式のテレメトリー ポリシーの説明が記述されています。 |
tracingConfiguration.samplingRate |
浮動小数点数 | トレースするリクエストの割合。0.0(0%)~ 1.0(100%)の範囲の小数で指定します。たとえば、0.01 はリクエストの 1% をサンプリングします。 |
tracingConfiguration.parentBasedSampling.enabled |
ブール値 | アップストリーム トレース サンプリングの決定(true または false)を有効にするかどうかを示します。 |
分散トレースを構成する
Google Cloud CLI を使用して Secure Web Proxy ゲートウェイにトレース ポリシーを適用するには、次の操作を行います。
swp-tracing-policy.yamlという名前の YAML ポリシー ファイルを作成します。cat <<EOF > swp-tracing-policy.yaml name: projects/PROJECT_ID/locations/REGION/telemetryPolicies/my-swp-tracing-policy telemetryTarget: resources: - "//networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/GATEWAY_NAME" description: "Distributed tracing policy for the Secure Web Proxy gateway" tracingConfiguration: samplingRate: 0.01 parentBasedSampling: enabled: true EOF次のように置き換えます。
PROJECT_ID: Google Cloud プロジェクトの IDREGION: Secure Web Proxy ゲートウェイがデプロイされているリージョン(us-central1など)GATEWAY_NAME: Secure Web Proxy ゲートウェイ インスタンスの名前
gcloud beta network-services telemetry-policies importコマンドを使用して、テレメトリー ポリシーをインポートします。gcloud beta network-services telemetry-policies import my-swp-tracing-policy \ --source=swp-tracing-policy.yaml \ --location=REGIONgcloud beta network-services telemetry-policies describeコマンドを使用して、ポリシーが適用されていることを確認します。gcloud beta network-services telemetry-policies describe my-swp-tracing-policy \ --location=REGION
ターゲット ゲートウェイを接続または切断する
ポリシー定義を更新するか、複数のリージョン ゲートウェイを関連付けるには、次の操作を行います。
swp-tracing-policy.yamlファイルのtelemetryTarget.resourcesリストを更新して、すべてのターゲット ゲートウェイ リソース URI を含めます。telemetryTarget: resources: - "//networkservices.googleapis.com/projects/PROJECT_ID/locations/us-central1/gateways/prod-swp-uc1" - "//networkservices.googleapis.com/projects/PROJECT_ID/locations/us-central1/gateways/staging-swp-uc1"gcloud beta network-services telemetry-policies importコマンドを使用して、更新したテレメトリー ポリシーをインポートします。gcloud beta network-services telemetry-policies import my-swp-tracing-policy \ --source=swp-tracing-policy.yaml \ --location=REGION次のように置き換えます。
PROJECT_ID: Google Cloud プロジェクトの IDREGION: Secure Web Proxy ゲートウェイがデプロイされているリージョン(us-central1など)
Trace でトレースを表示して分析する
Google Cloud コンソールで、[Trace エクスプローラ] ページに移動します。
Google Cloud プロジェクトを選択します。
[フィルタ] フィールドで、さまざまな属性を使用してトレースを検索します。
散布図またはタイムライン ビューでトレースをクリックすると、合計時間、プロキシ処理のレイテンシ、外部サーバーの IP の詳細などのスパンの詳細を確認できます。
トレースをログと指標に関連付ける
Secure Web Proxy は、トレース、ログ、指標間の関連付けを提供します。
ログとトレースの関連付け: Cloud Logging に書き込まれるすべてのプロキシ トランザクション ログエントリに、
projects/PROJECT_ID/traces/TRACE_ID形式のtraceフィールドが含まれます。- ログ エクスプローラでログエントリをクリックし、[トレースの詳細を表示] を選択して、Trace の対応するスパンに直接移動します。
- Trace で、[トレースの詳細] ペインの [ログを表示] をクリックして、そのリクエストに関連付けられているすべてのトランザクション ログを表示します。
指標の関連付け:
networkservices.googleapis.com/https/total_latenciesなどの Cloud Monitoring 指標で観測されたレイテンシの急増とトレース スパンの内訳を比較して、レイテンシの急増がプロキシ内で発生したのか、外部オリジン サーバーで発生したのかを特定します。