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

このページでは、プロキシ ネットワーク ロードバランサに 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 オブジェクトには、次のフィールドが含まれています。
  • statusDetails
  • Google Cloud Armor セキュリティ ポリシーのログエントリ
  • proxyStatus フィールドには、グローバル外部プロキシ ネットワーク ロードバランサ、リージョン外部プロキシ ネットワーク ロードバランサ、内部プロキシ ネットワーク ロードバランサがエラーコードを返した理由を示す文字列が含まれます。このフィールドは、従来のプロキシ ネットワーク ロードバランサではサポートされていません。

    値が空の文字列の場合、このフィールドはログに記録されません。これは、プロキシが 04XX5XX 以外のエラーコードを返した場合に発生する可能性があります。

    proxyStatus フィールドは 2 つの部分で構成されます。

ログのフィールド

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

一部のログフィールドでは、所定のフィールドに複数のデータが含まれています。これらのログフィールドはマルチ フィールド形式です。たとえば、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 プロトコル番号

proxyStatus エラー フィールド

proxyStatus フィールドには、ロードバランサがエラーを返した理由を指定する文字列が含まれます。proxyStatus フィールドには、proxyStatus errorproxyStatus details という 2 つの部分があります。このセクションでは、proxyStatus error フィールドでサポートされている文字列について説明します。

proxyStatus error フィールドは、次のロードバランサに適用されます。

  • グローバル外部プロキシ ネットワーク ロードバランサ
  • リージョン外部プロキシ ネットワーク ロードバランサ
  • クロスリージョン内部プロキシ ネットワーク ロードバランサ
  • リージョン内部プロキシ ネットワーク ロードバランサ
proxyStatus エラー 説明 一般的に記録されるレスポンス コード
destination_unavailable ロードバランサが、バックエンドが使用不可であると見なしています。たとえば、バックエンドとの通信が最近失敗したか、ヘルスチェックが失敗した場合などです。 500、503
connection_timeout ロードバランサがバックエンドへの接続を開始しようとしてタイムアウトしました。 504
connection_terminated

完全なレスポンスを受信する前に、ロードバランサからバックエンドへの接続が終了しました。

この proxyStatus error は、次のいずれかの状況で返されます。

  • 完全なレスポンスが受信される前に、ロードバランサからバックエンドへの接続が終了しました。
  • TLS 接続が SSL handshake で失敗し、クライアントがロードバランサとの接続を確立しませんでした。

0、502、503
connection_refused ロードバランサからバックエンドへの接続が拒否されました。 502、503
connection_limit_reached

ロードバランサはバックエンドに対する接続数を制限するように構成されており、この上限を超えています。

この proxyStatus error は、次のいずれかの状況で返されます。

  • バックエンドがメンテナンス モードの場合、トラフィックをそのバックエンドに転送することはできません。
  • リクエストがローカルでレート制限されている場合。
  • Envoy が、メモリ不足などのエラー状態を処理している場合。
502、503
destination_not_found ロードバランサは、このリクエストに使用する適切なバックエンドを決定できません。たとえば、バックエンドが構成されていない可能性があります。 500、404
dns_error バックエンド ホスト名の IP アドレスを検出しようとしたときに、ロードバランサで DNS エラーが発生しました。 502、503
proxy_configuration_error ロードバランサで内部構成エラーが発生しました。 500
proxy_internal_error ロードバランサで内部エラーが発生しました。 0、500、502
proxy_internal_response ロードバランサがバックエンドへの接続を試行せずにレスポンスを生成しました。 問題の種類に応じた任意のレスポンス コード。たとえば、410 レスポンス コードは、支払いの滞納が原因でバックエンドを使用できないことを意味します。
tls_protocol_error ロードバランサが TLS handshake 中に TLS エラーを検出しました。 0
tls_certificate_error ロードバランサが、サーバーから提示された証明書を検証するときにエラーを検出しました。 0
tls_alert_received ロードバランサが TLS handshake 中に致命的な TLS アラートを検出しました。 0

proxyStatus 詳細フィールド

proxyStatus フィールドには、ロードバランサがエラーを返した理由を指定する文字列が含まれます。proxyStatus フィールドには、proxyStatus errorproxyStatus details という 2 つの部分があります。proxyStatus details フィールドは省略可能で、追加情報が利用可能な場合にのみ表示されます。このセクションでは、proxyStatus details フィールドでサポートされている文字列について説明します。

proxyStatus details フィールドは、次のロードバランサに適用されます。

  • グローバル外部プロキシ ネットワーク ロードバランサ
  • リージョン外部プロキシ ネットワーク ロードバランサ
  • リージョン内部プロキシ ネットワーク ロードバランサ
  • クロスリージョン内部プロキシ ネットワーク ロードバランサ
proxyStatus の詳細 説明 一般的に記録されるレスポンス コード
client_disconnected_before_any_response ロードバランサがレスポンスを送信する前に、クライアントへの接続が切断されました。 0
backend_connection_closed バックエンドが予期せずロードバランサへの接続を閉じました。これは、ロードバランサがサードパーティ アプリケーションなど別のエンティティにトラフィックを送信していて、そのエンティティの TCP タイムアウト値がロードバランサのタイムアウト値である 10 分(600 秒)よりも短い場合に発生する可能性があります。 502
failed_to_connect_to_backend ロードバランサは、バックエンドに接続できませんでした。これには、接続フェーズ中のタイムアウトが含まれます。 503
failed_to_pick_backend ロードバランサは、リクエストを処理するための正常なバックエンドを選択できませんでした。 502
handled_by_identity_aware_proxy このレスポンスは、アクセスを許可する前のクライアントの ID 確認時に、Identity-Aware Proxy(IAP)によって生成されました。 200、302、400、401、403、500、502
request_overall_timeout リクエストの合計タイムアウトを超過しました。 408、503、504
tls_version_not_supported TLS プロトコル バージョンは認識されますが、サポートされていません。このエラーが起きると、TLS 接続が閉じられます。 0
unknown_psk_identity PSK 鍵の確立が必要であるにもかかわらず、許容される PSK ID をクライアントが提供しなかった場合に、サーバーがこのエラーを送信します。このエラーが起きると、TLS 接続が閉じられます。 0
no_application_protocol クライアントの「application_layer_protocol_negotiation」拡張機能が、サーバーでサポートされていないプロトコルのみをアドバタイズする場合に、サーバーによって送信されます。TLS アプリケーション レイヤ プロトコル ネゴシエーション拡張をご覧ください。このエラーが起きると、TLS 接続が閉じられます。 0
no_certificate 証明書が見つかりません。このエラーが起きると、TLS 接続が閉じられます。 0
bad_certificate 証明書が無効であるか、検証できない署名が含まれています。このエラーが起きると、TLS 接続が閉じられます。 0
unsupported_certificate 証明書の形式がサポートされていません。このエラーが起きると、TLS 接続が閉じられます。 0
certificate_revoked 証明書が署名者によって取り消されました。このエラーが起きると、TLS 接続が閉じられます。 0
certificate_expired 証明書の有効期限が切れているか、無効です。このエラーが起きると、TLS 接続が閉じられます。 0
certificate_unknown 証明書の処理中に、原因不明の問題が発生したため、証明書は受け入れられません。このエラーが起きると、TLS 接続が閉じられます。 0
unknown_ca 有効な証明書チェーンまたは部分チェーンが受信されましたが、CA 証明書が見つからなかったか、既知のトラスト アンカーと一致しなかったため、証明書は受け入れられませんでした。このエラーが起きると、TLS 接続が閉じられます。 0
unexpected_message 不適切なメッセージ(誤った handshake メッセージ、早期のアプリケーション データなど)が受信された。このエラーが起きると、TLS 接続が閉じられます。 0
bad_record_mac 保護を解除できないレコードが受信されました。このエラーが起きると、TLS 接続が閉じられます。 0
record_overflow 長さが 214+256 バイトを超える TLSCiphertext レコードが受信されたか、214 バイト(または他のネゴシエートされた上限)を超える TLSPlaintext レコードにレコードが復号されました。このエラーが起きると、TLS 接続が閉じられます。 0
handshake_failure 利用可能なオプションで、許容可能なセキュリティ パラメータのセットをネゴシエートできません。このエラーが起きると、TLS 接続が閉じられます。 0
illegal_parameter handshake のフィールドが正しくないか、他のフィールドとの整合性がありません。このエラーが起きると、TLS 接続が閉じられます。 0
access_denied 有効な証明書または PSK が受信されましたが、アクセス制御が適用されたときに、クライアントがネゴシエーションに進みませんでした。このエラーが起きると、TLS 接続が閉じられます。 0
decode_error 一部のフィールドが指定された範囲外であったか、メッセージの長さが正しくなかったため、メッセージをデコードできませんでした。このエラーが起きると、TLS 接続が閉じられます。 0
decrypt_error handshake(レコードレイヤではない)の暗号オペレーションが失敗しました。これには、署名を正しく確認できないこと、終了メッセージまたは PSK バインダを検証できないことが含まれます。このエラーが起きると、TLS 接続が閉じられます。 0
insufficient_security サーバーが、クライアントでサポートされているパラメータよりも安全なパラメータを必要とするため、ネゴシエーションが失敗しました。このエラーが起きると、TLS 接続が閉じられます。 0
inappropriate_fallback クライアントからの無効な接続の再試行に対する応答として、サーバーから送信されます。このエラーが起きると、TLS 接続が閉じられます。 0
user_cancelled プロトコル障害とは無関係の理由で、ユーザーが handshake をキャンセルしました。このエラーが起きると、TLS 接続が閉じられます。 0
missing_extension 提示された TLS バージョンまたは他のネゴシエートされたパラメータに対して送信が必須である拡張機能を含まない handshake メッセージを受信するエンドポイントによって送信されます。このエラーが起きると、TLS 接続が閉じられます。 0
unsupported_extension 特定の handshake メッセージに含めることが禁止されている拡張機能を含む handshake メッセージか、対応する ClientHello または CertificateRequest で最初に提示されなかった ServerHello または Certificate の拡張機能を含む handshake メッセージを受信したエンドポイントによって送信されます。このエラーが起きると、TLS 接続が閉じられます。 0
unrecognized_name 「server_name」拡張機能を通じてクライアントから提供された名前で識別できるサーバーが存在しない場合に、サーバーによって送信されます。TLS 拡張機能の定義をご覧ください。 0
bad_certificate_status_response サーバーから「status_request」拡張機能を通じて無効または許容できない OCSP レスポンスが提供された場合に、クライアントによって送信されます。TLS 拡張機能の定義をご覧ください。このエラーが起きると、TLS 接続が閉じられます。 0
load_balancer_configured_resource_limits_reached ロードバランサが、構成されたリソースの上限(最大接続数など)に達しました。 400、500、503

失敗した TLS 接続のログエントリ

バックエンドが選択される前にクライアントとロードバランサ間の TLS 接続が失敗すると、ログエントリにエラーが記録されます。バックエンド サービスは、さまざまなログ サンプルレートで構成できます。TLS 接続が失敗した場合、失敗した TLS 接続のログ サンプルレートは、バックエンド サービスの最大のサンプルレートとなります。たとえば、2 つのバックエンド サービスを構成し、ロギング サンプル レートを 0.30.5 に設定した場合、失敗した TLS 接続のログ サンプルレートは 0.5 となります。

失敗した TLS 接続は、次のログエントリの詳細を確認することで特定できます。

  • proxyStatus エラータイプは tls_alert_receivedtls_certificate_errortls_protocol_error、または connection_terminated です。
  • バックエンド情報はありません。

次のサンプルは、proxyStatus error フィールドを含む失敗した TLS ログエントリを示しています。

   json_payload:    {
   @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
   proxyStatus: "error="tls_alert_received"; details="server_to_client: handshake_failure""
   log_name: "projects/529254013417/logs/mockservice.googleapis.com%20name"
   }
   http_request {
    latency {
      nanos: 12412000
    }
    protocol: "HTTP/1.0"
    remote_ip: "127.0.0.2"
   }
  resource {
    type: "mock_internal_http_lb_rule"
    labels {
      backend_name: ""
      backend_scope: ""
      backend_scope_type: "UNKNOWN"
      backend_target_name: ""
      backend_target_type: "UNKNOWN"
      backend_type: "UNKNOWN"
      forwarding_rule_name: "l7-ilb-https-forwarding-rule-dev"
      matched_url_path_rule: "UNKNOWN"
      network_name: "lb-network"
      region: "REGION"
      target_proxy_name: "l7-ilb-https-proxy-dev"
      url_map_name: ""
    }
  }
  timestamp: "2023-08-15T16:49:30.850785Z"
  

リソースラベル

次の表に、リソースタイプ 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 ユーザーの国の名前。

次のステップ