Cloud Trace でアウトバウンド トラフィックをトレースする

このドキュメントでは、Cloud Trace を使用して Secure Web Proxy の分散リクエスト トレースを構成する方法について説明します。

コンセプト、主なメリット、アーキテクチャの詳細については、分散トレースの概要をご覧ください。

始める前に

  1. 初期設定の手順を完了します。
  2. プロジェクトで Compute Engine API、Network Services API、Cloud Trace API を有効にします。

    gcloud services enable \
        compute.googleapis.com \
        networkservices.googleapis.com \
        cloudtrace.googleapis.com
    
  3. アクティブな Secure Web Proxy ゲートウェイ インスタンスがデプロイされていることを確認します。詳細については、Secure Web Proxy インスタンスをデプロイするをご覧ください。

  4. 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.
    • ネットワーク セキュリティ サービス エージェント: service-PROJECT_NUMBER@gcp-sa-networksecurity.
    • クライアント アプリケーションがスパンを生成または伝播する場合のクライアント仮想マシン(VM)サービス アカウント

テレメトリー ポリシー構成スキーマ

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。ゲートウェイは、ポリシーと同じリージョンに存在する必要があります。

形式: //networkservices.googleapis.com/projects/PROJECT_ID/locations/REGION/gateways/GATEWAY_NAME

または、略称形式 projects/PROJECT_ID/locations/REGION/gateways/GATEWAY_NAME を使用します。

description 文字列 省略可。このフィールドには、人間が読める形式のテレメトリー ポリシーの説明が記述されています。
tracingConfiguration.samplingRate 浮動小数点数 トレースするリクエストの割合。0.0(0%)~ 1.0(100%)の範囲の小数で指定します。たとえば、0.01 はリクエストの 1% をサンプリングします。
tracingConfiguration.parentBasedSampling.enabled ブール値 アップストリーム トレース サンプリングの決定(true または false)を有効にするかどうかを示します。

分散トレースを構成する

Google Cloud CLI を使用して Secure Web Proxy ゲートウェイにトレース ポリシーを適用するには、次の操作を行います。

  1. 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 プロジェクトの ID
    • REGION: Secure Web Proxy ゲートウェイがデプロイされているリージョン(us-central1 など)
    • GATEWAY_NAME: Secure Web Proxy ゲートウェイ インスタンスの名前
  2. 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
    
  3. gcloud beta network-services telemetry-policies describe コマンドを使用して、ポリシーが適用されていることを確認します。

    gcloud beta network-services telemetry-policies describe my-swp-tracing-policy \
        --location=REGION
    

ターゲット ゲートウェイを接続または切断する

ポリシー定義を更新するか、複数のリージョン ゲートウェイを関連付けるには、次の操作を行います。

  1. 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"
    
  2. 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 プロジェクトの ID
    • REGION: Secure Web Proxy ゲートウェイがデプロイされているリージョン(us-central1 など)

Trace でトレースを表示して分析する

  1. Google Cloud コンソールで、[Trace エクスプローラ] ページに移動します。

    Trace エクスプローラに移動

  2. Google Cloud プロジェクトを選択します。

  3. [フィルタ] フィールドで、さまざまな属性を使用してトレースを検索します。

  4. 散布図またはタイムライン ビューでトレースをクリックすると、合計時間、プロキシ処理のレイテンシ、外部サーバーの IP の詳細などのスパンの詳細を確認できます。

トレースをログと指標に関連付ける

Secure Web Proxy は、トレース、ログ、指標間の関連付けを提供します。

  • ログとトレースの関連付け: Cloud Logging に書き込まれるすべてのプロキシ トランザクション ログエントリに、projects/PROJECT_ID/traces/TRACE_ID 形式の trace フィールドが含まれます。

    • ログ エクスプローラでログエントリをクリックし、[トレースの詳細を表示] を選択して、Trace の対応するスパンに直接移動します。
    • Trace で、[トレースの詳細] ペインの [ログを表示] をクリックして、そのリクエストに関連付けられているすべてのトランザクション ログを表示します。
  • 指標の関連付け: networkservices.googleapis.com/https/total_latencies などの Cloud Monitoring 指標で観測されたレイテンシの急増とトレース スパンの内訳を比較して、レイテンシの急増がプロキシ内で発生したのか、外部オリジン サーバーで発生したのかを特定します。

次のステップ