プロキシ ネットワーク ロードバランサのロギングとモニタリング

このページでは、プロキシ ネットワーク ロードバランサに Cloud LoggingCloud Monitoring を構成して使用する方法について説明します。

リソースのモニタリング

次の表に、ロードバランサのリソース名を示します。

リージョン外部プロキシ ネットワーク ロードバランサ

リージョン内部プロキシ ネットワーク ロードバランサ

クロスリージョン内部プロキシ ネットワーク ロードバランサ(プレビュー

グローバル外部プロキシ ネットワーク ロードバランサ

従来のプロキシ ネットワーク ロードバランサ
Logging のモニタリング対象のリソースタイプ 「プロキシ ネットワーク ロードバランサのルール」
l4_proxy_rule
「グローバル外部プロキシ ネットワーク ロードバランサのルール」
tcp_ssl_proxy_rule
Monitoring のモニタリング対象のリソースタイプ 「プロキシ ネットワーク ロードバランサのルール」
l4_proxy_rule
「グローバル外部プロキシ ネットワーク ロードバランサのルール」
tcp_ssl_proxy_rule

プロキシ ネットワーク ロードバランサのロギング

ログは、ロードバランサのトラブルシューティングとモニタリングに有用な情報を提供します。ログは接続ごとに集約され、各接続がサービスを提供するバックエンドにどのようにルーティングされるかについての分析情報を提供します。

ログの使用に追加料金はかかりません。ただし、ログのインポート方法に応じて、Cloud Logging、BigQuery、Pub/Sub のいずれかの標準料金が適用されます。ログを有効にしても、ロードバランサのパフォーマンスに影響はありません。

ログのサンプリングと収集

ロードバランサのバックエンド仮想マシン(VM)インスタンスとの送受信接続がサンプリング対象になります。これらのサンプリングされた接続が処理され、ログが生成されます。logConfig.sampleRate パラメータに従って、ログエントリとして出力される接続の割合を制御します。logConfig.sampleRate1.0(100%)の場合、すべての接続のログが生成され、Cloud Logging に書き込まれます。

新しいバックエンド サービスでロギングを有効にする

gcloud

gcloud compute backend-services create コマンドを使用します。

リージョン外部プロキシ ネットワーク ロードバランサとリージョン内部プロキシ ネットワーク ロードバランサの場合:

    gcloud compute backend-services create BACKEND_SERVICE \
        --region=REGION \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:

    gcloud compute backend-services create BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

次のように置き換えます。

  • BACKEND_SERVICE: バックエンド サービスの名前。
  • REGION: 作成するバックエンド サービスのリージョン。
  • SAMPLE_RATE: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。

    フィールドの値は 0.0 to 1.0 から指定する必要があります。ここで、0.0 はログが報告されないことを意味し、1.0 は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが 0.0 であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は 1.0 です。

API

regionBackendServices.insert メソッドPOST リクエストを送信します。

リージョン内部プロキシ ネットワーク ロードバランサの場合:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

リージョン外部プロキシ ネットワーク ロードバランサの場合:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

グローバル外部プロキシ ネットワーク ロードバランサの場合:

backendServices.insert メソッドPOST リクエストを送信します。

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

従来のプロキシ ネットワーク ロードバランサの場合:

backendServices.insert メソッドPOST リクエストを送信します。

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

クロスリージョン内部プロキシ ネットワーク ロードバランサの場合:

backendServices.insert メソッドPOST リクエストを送信します。

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

次のように置き換えます。

  • BACKEND_SERVICE: バックエンド サービスの名前。
  • SAMPLE_RATE: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。

    フィールドの値は 0.0 to 1.0 から指定する必要があります。ここで、0.0 はログが報告されないことを意味し、1.0 は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが 0.0 であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は 1.0 です。

既存のバックエンド サービスでロギングを有効にする

gcloud

gcloud compute backend-services update コマンドを使用します。

リージョン外部プロキシ ネットワーク ロードバランサとリージョン内部プロキシ ネットワーク ロードバランサの場合:

    gcloud compute backend-services update BACKEND_SERVICE \
        --region=REGION \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

次のように置き換えます。

  • BACKEND_SERVICE: バックエンド サービスの名前。
  • REGION: 作成するバックエンド サービスのリージョン。
  • SAMPLE_RATE: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。

    フィールドの値は 0.0 to 1.0 から指定する必要があります。ここで、0.0 はログが報告されないことを意味し、1.0 は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが 0.0 であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は 1.0 です。

API

regionBackendServices/patch メソッドPATCH リクエストを送信します。

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
     

リージョン内部プロキシ ネットワーク ロードバランサの場合:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

リージョン外部プロキシ ネットワーク ロードバランサの場合:

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

グローバル外部プロキシ ネットワーク ロードバランサの場合:

backendServices/patch メソッドPATCH リクエストを送信します。

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

従来のプロキシ ネットワーク ロードバランサの場合:

backendServices/patch メソッドPATCH リクエストを送信します。

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

クロスリージョン内部プロキシ ネットワーク ロードバランサの場合:

backendServices/patch メソッドPATCH リクエストを送信します。

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

次のように置き換えます。

  • PROJECT_ID: プロジェクトの名前。
  • BACKEND_SERVICE: バックエンド サービスの名前。
  • SAMPLE_RATE: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。

    フィールドの値は 0.0 to 1.0 から指定する必要があります。ここで、0.0 はログが報告されないことを意味し、1.0 は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが 0.0 であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は 1.0 です。

既存のバックエンド サービスでロギングを無効にする

gcloud

gcloud compute backend-services update コマンドを使用します。

リージョン外部プロキシ ネットワーク ロードバランサとリージョン内部プロキシ ネットワーク ロードバランサの場合:

gcloud compute backend-services update BACKEND_SERVICE \
   --region=REGION \
   --no-enable-logging

グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:

gcloud compute backend-services update BACKEND_SERVICE \
   --global \
   --no-enable-logging

次のように置き換えます。

  • BACKEND_SERVICE: バックエンド サービスの名前。
  • REGION: バックエンド サービスのリージョン。

API

リージョン外部プロキシ ネットワーク ロードバランサとリージョン内部プロキシ ネットワーク ロードバランサの場合:

regionBackendServices/patch メソッドPATCH リクエストを送信します。

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
  {
  "logConfig": {
    "enable": false
   }
  }
 

グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:

backendServices/patch メソッドPATCH リクエストを送信します。

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
  {
  "logConfig": {
    "enable": false
   }
  }
 

次のように置き換えます。

  • PROJECT_ID: プロジェクトの名前。
  • REGION: バックエンド サービスのリージョン。
  • BACKEND_SERVICE: バックエンド サービスの名前。

ログを表示する

ログが Cloud Logging に取り込まれ、ログルーター シンクで除外されていない場合、Cloud Logging APIGoogle Cloud CLI でログを確認できます。

すべてのログを表示するには、次の操作を行います。

コンソール

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

    [ログ エクスプローラ] に移動

  2. リソースタイプに [プロキシ ネットワーク ロードバランサのルール] を選択します。

  3. ログ名に loadbalancing.googleapis.com/flows を選択します。

コンソール クエリ

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

    [ログ エクスプローラ] に移動

  2. [クエリを表示] をクリックします。

  3. または、クエリ フィールドに次の内容を貼り付けます。

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    
  4. [クエリを実行] をクリックします。

次のように置き換えます。

  • LOG_RESOURCE_TYPE: Logging モニタリング対象リソースタイプ。l4_proxy_rule または tcp_ssl_proxy_rule のいずれかに設定します。
  • PROJECT_ID: プロジェクトの名前。

特定のバックエンド サービスのログを表示する

特定のバックエンド サービスのログを表示するには、次の操作を行います。

コンソール クエリ

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

    [ログ エクスプローラ] に移動

  2. [クエリを表示] をクリックします。

  3. または、クエリ フィールドに次の内容を貼り付けます。

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    resource.labels.backend_service_name="BACKEND_SERVICE_NAME"
    
  4. [クエリを実行] をクリックします。

次のように置き換えます。

  • LOG_RESOURCE_TYPE: Logging モニタリング対象リソースタイプ。l4_proxy_rule または tcp_ssl_proxy_rule のいずれかに設定します。
  • PROJECT_ID: プロジェクトの名前。
  • BACKEND_SERVICE_NAME: バックエンド サービスの名前。

バックエンド インスタンス グループのログを表示する

特定のバックエンド インスタンス グループのログを表示するには、次の操作を行います。

コンソール クエリ

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

    [ログ エクスプローラ] に移動

  2. [クエリを表示] をクリックします。

  3. または、クエリ フィールドに次の内容を貼り付けます。

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    resource.labels.backend_group_name="BACKEND_GROUP_NAME"
    
  4. [クエリを実行] をクリックします。

次のように置き換えます。

  • LOG_RESOURCE_TYPE: Logging モニタリング対象リソースタイプ。l4_proxy_rule または tcp_ssl_proxy_rule のいずれかに設定します。
  • PROJECT_ID: プロジェクトの名前。
  • BACKEND_GROUP_NAME: インスタンス グループの名前。

ログの内容

ログエントリには、トラフィックのモニタリングとデバッグに役立つ情報が含まれています。ログレコードには、すべてのログレコードのデフォルト フィールドである必須フィールドが含まれています。

フィールド フィールドの形式 フィールドのタイプ: 必須または省略可 説明
severity
timestamp
receiveTimestamp
insertID
logName
LogEntry 必須 ログエントリで説明されている一般的なフィールド。
resource MonitoredResource 必須

MonitoredResource は、ログエントリに関連付けられているリソースタイプです。

MonitoredResourceDescriptor は、型名とラベルのセットを使用して MonitoredResource オブジェクトのスキーマを記述します。詳細については、リソースラベルをご覧ください。

jsonPayload オブジェクト(Struct 形式) 必須 JSON オブジェクトとして表されるログエントリ ペイロード。JSON オブジェクトには、次のフィールドが含まれています。

ログのフィールド

ログレコードには、すべてのログレコードのデフォルト フィールドである必須フィールドが含まれています。

一部のログフィールドでは、所定のフィールドに複数のデータが含まれています。これらのログフィールドはマルチ フィールド形式です。たとえば、connection フィールドは IpConnection 形式で、送信元と宛先の IP アドレスとポート、およびプロトコルが 1 つのフィールドに格納されます。これらのマルチ フィールドのログフィールドについては、次のレコード形式の表で説明します。

次の表に、リソース l4_proxy_rule で必要なすべてのログフィールドを示します。

フィールド フィールドの形式 説明
connection IpConnection この接続を説明する 5 タプル。
startTime 文字列 クライアントからの接続がロードバランサで受け入れられた時点のタイムスタンプ(RFC 3339 の日付文字列形式)。
endTime 文字列 クライアントまたはバックエンドが接続を終了した時点のタイムスタンプ(RFC 3339 の日付文字列形式)。
bytesSent int64 サーバーからクライアントに送信されるバイト数。
bytesReceived int64 サーバーがクライアントから受信したバイト数。

IpConnection フィールドの形式

フィールド タイプ 説明
clientIp 文字列 クライアント IP アドレス
clientPort int32 クライアント ポート。TCP 接続と UDP 接続に対してのみ設定します。
serverIp 文字列 サーバーの IP アドレス(転送ルールの IP)
serverPort int32 サーバーポート。TCP 接続と UDP 接続に対してのみ設定します。
protocol int32 IANA プロトコル番号

リソースラベル

次の表に、リソースタイプ l4_proxy_rule のリソースラベルを示します。

フィールド タイプ 説明
network_name 文字列 ロードバランサの VPC ネットワークの名前。
project_id 文字列 このリソースに関連付けられた Google Cloud プロジェクトの ID。
region 文字列 ロードバランサが定義されているリージョン。
target_proxy_name 文字列 転送ルールで参照されるターゲット プロキシ オブジェクトの名前。
forwarding_rule_name 文字列 転送ルール オブジェクトの名前。
loadbalancing_scheme_name 文字列 ロードバランサの転送ルールとバックエンド サービスの属性。ロードバランサが内部トラフィックと外部トラフィックのどちらで使用できるかを示します。
backend_target_name 文字列 リクエストの処理に選択したバックエンドの名前。
backend_target_type 文字列 バックエンド ターゲット (BACKEND_SERVICE / UNKNOWN) のタイプ。
backend_name 文字列 バックエンド インスタンス グループまたはネットワーク エンドポイント グループ(NEG)の名前。
backend_type 文字列

インスタンス グループ、NEG、不明のいずれかのバックエンドのタイプ。

Cloud Logging では、ロギングが無効になっている場合でも、backend_type が UNKNOWN の場合は、リクエストがログに記録されます。たとえば、ロードバランサがバックエンドを選択する前にクライアントがロードバランサへの接続を閉じると、backend_typeUNKNOWN に設定され、リクエストがログに記録されます。これらのログは、ロードバランサがバックエンドを選択できなかったために終了したクライアント リクエストについて有用なデバッグ情報を提供します。

backend_scope 文字列 バックエンドの範囲。ゾーン名またはリージョン名です。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。
backend_scope_type 文字列 バックエンドの範囲(REGION/ZONE)。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。

モニタリング

プロキシ ネットワーク ロードバランサは、モニタリング データを Cloud Monitoring にエクスポートします。

モニタリング指標は次の目的で使用できます。

  • ロードバランサの構成、使用状況、パフォーマンスを評価する。
  • 問題のトラブルシューティングを行う。
  • リソースの使用率とユーザー エクスペリエンスを改善する。

Monitoring の事前定義されたダッシュボードに加えて、カスタム ダッシュボードを作成して、アラートをセットアップし、Cloud Monitoring API を使用して指標に対するクエリを実行できます。

Monitoring ダッシュボードを表示する

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

  2. ナビゲーション パネルに [リソース] が表示されている場合は [リソース] を選択し、[Google Cloud ロードバランサ] を選択します。それ以外の場合は、[ダッシュボード] を選択し、[Google Cloud ロードバランサ] という名前のダッシュボードを選択します。

  3. ロードバランサの名前をクリックします。

左側のペインでは、このロードバランサのさまざまな詳細を確認できます。右側のペインでは時系列のグラフを表示できます。特定の内訳を確認するには、[Breakdowns] をクリックしてください。

指標報告の頻度と保持

ロードバランサの指標は、1 分単位のバッチで Monitoring にエクスポートされます。モニタリング データは 6 週間保持されます。指標はサンプリングされたトラフィックに基づいています(サンプリング レートは動的で、調整できません)。

ダッシュボードでは、1H(1 時間)、6H(6 時間)、1D(1 日)、1W(1 週間)、6W(6 週間)のデフォルト間隔でデータ分析の結果を確認できます。また、6 週間から 1 分までの間隔を任意に指定して手動で分析を行うこともできます。

従来のプロキシ ネットワーク ロードバランサの指標

従来のプロキシ ネットワーク ロードバランサの次の指標が Monitoring に報告されます。

指標 名前 説明
インバウンド トラフィック tcp_ssl_proxy/ingress_bytes_count 外部エンドポイントから Google Front End(GFE)を経由して構成済みのバックエンドに送信されるバイト数(バイト/秒単位)。
アウトバウンド トラフィック tcp_ssl_proxy/egress_bytes_count GFE を通じて構成済みバックエンドから外部エンドポイントに送信されるバイト数(バイト/秒単位)。
オープン接続 tcp_ssl_proxy/open_connections 所定のサンプル時点で開いている接続数。サンプルは 1 分間隔で取得されます。
1 秒あたりの新しい接続数 tcp_ssl_proxy/new_connections 作成された接続数(クライアントがバックエンドに正常に接続された場合)。カウントは 1 分単位で行われますが、グラフを調整して 1 秒あたりの値を表示できます。詳細については、Monitoring のドキュメントをご覧ください。
1 秒間ごとのクローズド接続 tcp_ssl_proxy/closed_connections 終了した接続数。カウントは 1 分単位で行われますが、グラフを調整して 1 秒あたりの値を表示できます。詳細については、Monitoring のドキュメントをご覧ください。
フロントエンド RTT tcp_ssl_proxy/frontend_tcp_rtt クライアントと GFE 間の接続ごとに測定され、平滑化されたラウンドトリップ時間(RTT)の分布(GFE の TCP スタックによって、アプリケーション層のバイトが GFE からクライアントに渡されるたびに測定)。平滑化された RTT は、RTT 測定値で発生する可能性のある変動と異常を処理するアルゴリズムです。

他のロードバランサの指標

リージョン内部プロキシ ネットワーク ロードバランサ、リージョン外部プロキシ ネットワーク ロードバランサ、クロスリージョン内部プロキシ ネットワーク ロードバランサ、グローバル外部プロキシ ネットワーク ロードバランサの次の指標が Monitoring に報告されます。

指標 名前 説明
インバウンド トラフィック l4_proxy/ingress_bytes_count プロキシを使用してクライアントからバックエンド VM に送信されたバイト数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 210 秒間表示されません。
アウトバウンド トラフィック l4_proxy/egress_bytes_count プロキシを使用してバックエンド VM からクライアントに送信されるバイト数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 210 秒間表示されません。
1 秒間ごとのクローズド接続 l4_proxy/tcp/closed_connections_count TCP RST メッセージまたは TCP FIN メッセージを使用して終了された接続数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 210 秒間表示されません。

指標のフィルタリング ディメンション

指標はロードバランサごとに集計されます。指標は、次の項目ごとにさらに詳細に分類できます。

プロパティ 説明
BACKEND SCOPE 接続を処理したインスタンス グループの範囲(リージョンまたはゾーン)。
BACKEND ZONE インスタンス グループがゾーン インスタンス グループの場合、接続を処理したインスタンス グループのゾーン。
BACKEND REGION インスタンス グループがリージョン インスタンス グループの場合、接続を処理したインスタンス グループのリージョン。
PROXY CONTINENT ユーザーの TCP / SSL 接続を終端した GFE の大陸(例: AmericaEuropeAsia)。
INSTANCE GROUP ユーザー接続を受け取ったインスタンス グループの名前。
FORWARDING RULE GFE への接続に使用された転送ルールの名前。
CLIENT COUNTRY ユーザーの国の名前。

次のステップ