外部パススルー ネットワーク ロードバランサのロギングとモニタリング

このドキュメントでは、外部パススルー ネットワーク ロードバランサに Cloud LoggingCloud Monitoring を構成し、使用する方法について説明します。

ロギング

ログは、外部パススルー ネットワーク ロードバランサのトラブルシューティングとモニタリングに役立つ情報を提供します。ログは接続ごとに集約され、ほぼリアルタイムでエクスポートされます。ログは、ロードバランスされたインスタンスの TCP、UDP、ESP、GRE、ICMP、ICMPv6 の各フローについて、上り(内向き)トラフィックと下り(外向き)トラフィックの両方で生成されます。ログエントリに含まれるフィールドの詳細については、ログフィールドをご覧ください。

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

ロギングには次の利点があります。

  • 外部パススルー ネットワーク ロードバランサのトラフィック モニタリング。接続ごとのロギングにより、各接続がサービスを提供するバックエンドにどのようにルーティングされるかについての分析情報が得られます。

  • ネットワークのトラブルシューティング。トラブルシューティングには、外部パススルー ネットワーク ロードバランサのログを利用できます。詳細については、外部パススルー ネットワーク ロードバランサのトラブルシューティングをご覧ください。

外部クライアントから VM へのフローのサンプルログ形式

次の図は、外部クライアント(203.0.113.7)、外部パススルー ネットワーク ロードバランサ(198.51.100.99)、バックエンド インスタンス(10.240.0.2)のインバウンド トラフィックとアウトバウンド トラフィックを示しています。

外部クライアントからバックエンド VM サービスへのフロー
外部クライアントから VM へのインバウンド フローとアウトバウンド フロー。

クライアントからバックエンド インスタンスへの接続の外部パススルー ネットワーク ロードバランサのログの形式は次のとおりです。

  • connection.clientIp: 203.0.113.7
  • connection.serverIp: 198.51.100.99
  • bytesSent: 1256
  • bytesReceived: 4521

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

Google Cloud は、ロードバランサのバックエンド VM で送受信されたパケットをサンプリングします。サンプリングされたパケットは、ログを生成するために処理されます。

すべてのパケットがサンプリングされるわけではありません。Google Cloud は、物理ホスト上のトラフィック量に応じてパケットのサブセットをサンプリングします。最も低いサンプリング レートは、1,024 パケット中 1 パケットです。サンプリング レートは Google Cloud によって動的に制御されます。サンプリング レートは調整できません。

パケット サンプリングは、ファイアウォール ルールと次のように相互作用します。

  • 下り(外向き)ファイアウォール ルールが適用される前にパケットがサンプリングされます。
  • 上り(内向き)ファイアウォール ルールが適用された後にパケットがサンプリングされます。

パケット サンプリングの後、Google Cloud はサンプリングされたパケットを次のように処理します。

  1. 集計: サンプリングされたパケットは 5 秒間隔で集計され、単一のフローエントリが生成されます。

  2. 構成可能な(セカンダリ)ログ サンプリング: 2 番目のサンプリング プロセスで、フローをサンプリングします。logConfig.sampleRate パラメータに従って、ログエントリとして出力されるフロー部分の割合を制御します。logConfig.sampleRate1.0(100%)の場合、サンプリングされたパケットがすべて処理されます。

  3. Logging への書き込み: ログエントリが Cloud Logging に書き込まれます。

オプション フィールド

ログレコードには必須フィールドとオプション フィールドがあります。ログフィールド セクションには、オプション フィールドと必須フィールドが表示されます。すべての必須フィールドは常に含まれます。保持するオプション フィールドはカスタマイズできます。

  • [すべてのオプションのフィールドを含める] を選択すると、ログレコード形式のすべてのオプションのフィールドがフローログに含まれます。新しいオプション フィールドがレコード形式に追加されると、フローログに新しいフィールドが自動的に含まれます。

  • [すべてのオプションのフィールドを除外する] を選択した場合、オプション フィールドはすべて省略されます。

  • [カスタム] を選択する場合は、親フィールドに含めるオプション フィールド(例: serverInstance)またはフルネーム(例: serverInstance.vm)を指定できます。

新しいオプション フィールドがレコード形式に追加された場合、これらのフィールドが指定した親フィールド内の新しいフィールドである場合を除き、これらのフィールドはログに含まれません。

親フィールドを使用してカスタムのオプション フィールドを指定した場合、その親フィールド内のレコード形式に新しいオプション フィールドが追加されると、ログには新しいフィールドが自動的に含まれます。たとえば、optionalFieldA を含めると、optionalFieldA.subField1 という名前で新しいログがフィールドに自動的に追加されます。

オプション フィールドをカスタマイズする手順については、新しいバックエンド サービスでロギングを有効にするをご覧ください。

レスポンス パケットの送信元 IP アドレスの要件

ロギングは、これらのパケットの送信元 IP アドレスがロードバランサの転送ルールの IP アドレスと一致する場合にのみ、バックエンド VM からのレスポンス パケットをサンプリングします。TCP 接続の場合、レスポンス パケットの送信元は常にリクエスト パケットの宛先と一致している必要があります。ただし、他のプロトコルでは、レスポンス パケットが異なる送信元 IP アドレスを使用する場合があります。詳細については、リクエスト パケットと戻りパケットの IP アドレスをご覧ください。

外部パススルー ネットワーク ロードバランサのロギングで使用されるパケット サンプリング プロセスでは、バックエンド VM からのレスポンス パケットのソースが外部パススルー ネットワーク ロードバランサの転送ルールの IP アドレスと一致しない場合、それらのレスポンス パケットは省略されます。

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

コンソール

  1. Google Cloud コンソールの [ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. ロードバランサの名前をクリックします。
  3. [ 編集] をクリックしてから、[バックエンドの構成] をクリックします。
  4. [バックエンド サービスを作成] を選択し、必須のバックエンド サービス フィールドに入力します。
  5. [ロギング] セクションで、[ロギングを有効にする] チェックボックスをオンにします。
  6. [サンプルレート] の値を選択します。レートは 0.01.0(デフォルト)に設定できます。
  7. 省略可: ログにすべてのオプション フィールドをすべて含めるには、[任意項目] セクションで [すべてのオプションのフィールドを含める] をクリックします。
  8. バックエンド サービスの編集を終了するには、[更新] をクリックします。
  9. ロードバランサの編集を終了するには、[更新] をクリックします。

gcloud

ロギングを有効にするには、gcloud compute backend-services create コマンドでバックエンド サービスを作成します。

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

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

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

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

  • LOGGING_OPTIONAL: ログに含めるオプション フィールド:
    • INCLUDE_ALL_OPTIONAL: すべてのオプション フィールドを含めます。
    • EXCLUDE_ALL_OPTIONAL(デフォルト): すべてのオプション フィールドを除外します。
    • CUSTOM: OPTIONAL_FIELDS で指定するオプション フィールドのカスタムリストを含めます。
  • OPTIONAL_FIELDS: ログに含めるオプション フィールドのカンマ区切りのリスト。

    例: serverInstance.vm,serverGkeDetailsLOGGING_OPTIONALCUSTOM に設定されている場合のみ設定できます。

API

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

    POST https://compute.googleapis.com/compute/v1/projects/`PROJECT_ID`/regions/`REGION`/backendServices
    

すべてのオプション フィールドを除外する

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

すべてのオプション フィールドを含める

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

オプション フィールドのカスタムリストを含める

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "CUSTOM",
       "optionalFields": ["field1","field2",...]
      }
    }
    

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

コンソール

  1. Google Cloud コンソールの [ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

  2. ロードバランサの名前をクリックします。
  3. [ 編集] をクリックしてから、[バックエンドの構成] をクリックします。
  4. バックエンド サービスの横にある [編集] をクリックします。
  5. [ロギング] セクションで、[ロギングを有効にする] チェックボックスをオンにします。
  6. [サンプルレート] の値を選択します。レートは 0.01.0(デフォルト)に設定できます。
  7. 省略可: ログにすべてのオプション フィールドをすべて含めるには、[任意項目] セクションで [すべてのオプションのフィールドを含める] をクリックします。
  8. バックエンド サービスの編集を終了するには、[更新] をクリックします。
  9. ロードバランサの編集を終了するには、[更新] をクリックします。

gcloud

gcloud compute backend-services update コマンドを使用して、既存のバックエンド サービスでロギングを有効にします。

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

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

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

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

  • LOGGING_OPTIONAL: ログに含めるオプション フィールド:
    • INCLUDE_ALL_OPTIONAL: すべてのオプション フィールドを含めます。
    • EXCLUDE_ALL_OPTIONAL(デフォルト): すべてのオプション フィールドを除外します。
    • CUSTOM: OPTIONAL_FIELDS で指定するオプション フィールドのカスタムリストを含めます。
  • OPTIONAL_FIELDS: ログに含めるオプション フィールドのカンマ区切りのリスト。

    例: serverInstance.vm,serverGkeDetailsLOGGING_OPTIONALCUSTOM に設定されている場合のみ設定できます。

API

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

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

すべてのオプション フィールドを除外する

     "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "EXCLUDE_ALL_OPTIONAL"
      }
     

すべてのオプション フィールドを含める

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

オプション フィールドのカスタムリストを含める

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE,
       "optionalMode": "CUSTOM",
       "optionalFields": ["field1","field2",...]
      }
    }
    

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

コンソール

  1. Google Cloud コンソールで、[ロード バランシング] ページに移動します。

    [ロード バランシング] に移動

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

  3. [ 編集] をクリックしてから、[バックエンドの構成] をクリックします。

  4. ロギングを完全に無効にするには、[ロギング] セクションで [ロギングを有効にする] チェックボックスをオフにします。

  5. ロギングを有効にした場合、[サンプルレート] に異なる値を設定できます。レートは 0.01.0(デフォルト)に設定できます。サンプリングされたパケットの 20% に対してのみログを生成するには、値を 0.2 に設定します。

  6. バックエンド サービスの編集を終了するには、[更新] をクリックします。

  7. ロードバランサの編集を終了するには、[更新] をクリックします。

gcloud

gcloud compute backend-services update コマンドを使用して、バックエンド サービスのロギングを無効にします。

gcloud compute backend-services update BACKEND_SERVICE \
  --region=REGION \
  --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
  }
 }
 

ログの表示

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

すべての外部パススルー ネットワーク ロードバランサのログを表示するには:

コンソール

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

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

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

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

コンソールのクエリ

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

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

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

  3. または、[クエリ] フィールドに次の内容を貼り付けます。ここで、PROJECT_ID は実際のプロジェクト ID に置き換えます。

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

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

特定のバックエンド サービスの外部パススルー ネットワーク ロードバランサのログを表示するには:

コンソール クエリ

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

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

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

  3. または、[クエリ] フィールドに次の内容を貼り付けます。PROJECT_ID はプロジェクト ID、BACKEND_SERVICE_NAME はバックエンド サービスの名前に置き換えます。

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

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

特定のバックエンド インスタンス グループの外部パススルー ネットワーク ロードバランサのログを表示するには:

コンソール クエリ

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

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

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

  3. または、[クエリ] フィールドに次の内容を貼り付けます。PROJECT_ID はプロジェクト ID に置き換え、BACKEND_GROUP_NAME はインスタンス グループの名前に置き換えます。

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

ログのフィールド

ログレコードには、すべてのログレコードのデフォルト フィールドである必須フィールドと、詳細情報を追加するオプションのフィールドが含まれています。オプション フィールドは、ストレージ コストを節約するために省略できます。

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

モニタリング対象リソースは loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule です。

フィールド フィールドの形式 フィールドのタイプ: 必須または省略可 説明
connection IpConnection 必須 この接続を説明する 5 タプル。
startTime 文字列 必須 集計対象である時間間隔で最初に観測されるパケットのタイムスタンプ(RFC 3339 の日付文字列形式)。
endTime 文字列 必須 集計対象である時間間隔で最後に観測されるパケットのタイムスタンプ(RFC 3339 の日付文字列形式)。
bytesSent int64 必須 サーバーからクライアントに送信されるバイト数。
bytesReceived int64 必須 サーバーがクライアントから受信したバイト数。
packetsSent int64 必須 サーバーからクライアントに送信されたパケット数。
packetsReceived int64 必須 サーバーがクライアントから受信したパケット数。
rtt 文字列 必須

レイテンシは、TCP 接続でのみ測定されます。レイテンシは、ネットワークのラウンドトリップ時間(RTT)の推定値と、クライアントのオペレーティング システム内でパケットを処理するために費やした時間の合計です。

サンプリングされたパケットの場合、RTT はロードバランスされたバックエンドの観点から計算されます。TCP セグメントを送信したバックエンドと、送信されたセグメントのシーケンス番号の TCP 確認応答を受信したバックエンドとの時間差を測定することで計算されます。

レイテンシは、秒数で始まり、秒を示す文字列(s)で終わる形式で示されます。ナノ秒単位は小数点以下の秒数で表されます。たとえば、250 ミリ秒のレイテンシは 0.250000000s として示されます。

serverInstance InstanceDetails 省略可 バックエンド VM インスタンスの詳細。
clientLocation GeographicDetails 省略可 クライアントで使用可能な位置情報メタデータ。
serverGkeDetails GkeDetails 省略可 サーバー バックエンドの GKE メタデータ。バックエンドが GKE エンドポイントの場合にのみ使用できます。
networkTier NetworkTierDetails 省略可 外部接続のネットワーク ティア。クライアントが Google Cloud 内にない場合にのみ設定されます。

IpConnection フィールドの形式

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

InstanceDetails フィールドの形式

フィールド タイプ 説明
projectId 文字列 VM を含むプロジェクトの ID
vm 文字列 VM のインスタンス名
region 文字列 VM のリージョン
zone 文字列 VM のゾーン
vmIp 文字列 接続を処理したネットワーク インターフェースのプライマリ内部 IPv4 アドレス

GeographicDetails フィールドの形式

フィールド タイプ 説明
continent 文字列 大陸の名前
regionCode 文字列 Unicode の CLDR リージョン コード(USFR など)。ほとんどの国では、このコードが ISO-3166-2 コードに直接対応しています。
subRegion 文字列 Unicode CLDR サブディビジョン ID (国の州や都道府県、USCACAON など)。この Unicode コードは、ISO-3166-2 標準で定義されている下位地域区分から派生しています)。
city 文字列 都市の名前。たとえば、カリフォルニア州の Mountain View は Mountain View です。この変数について有効な値の正規リストはありません。都市名には、US-ASCII 文字、数字、スペース、!#$%&'*+-.^_`|~ を含めることができます。
asn int32 このエンドポイントが属する外部ネットワークの自律システム番号(ASN)

GkeDetails フィールドの形式

フィールド タイプ 説明
cluster ClusterDetails GKE クラスタ メタデータ
pod PodDetails トラフィックの送信元または宛先が Pod である場合に入力される GKE Pod のメタデータ。
service ServiceDetails Service エンドポイントにのみ入力される GKE Service メタデータ。レコードには最大 2 つの Service が含まれます。関連する Service が 3 つ以上ある場合、このフィールドには特別な MANY_SERVICES マーカーを持つ 1 つの Service が含まれます。

ClusterDetails フィールドの形式

フィールド タイプ 説明
cluster 文字列 GKE クラスタ名
clusterLocation 文字列 クラスタのロケーション。クラスタのロケーションは、ゾーンまたはリージョンのいずれかです。

PodDetails フィールドの形式

フィールド タイプ 説明
pod 文字列 Pod の名前
podNamespace 文字列 Pod の名前空間

ServiceDetails フィールドの形式

フィールド タイプ 説明
service 文字列 Service の名前。関連するサービスが 3 つ以上ある場合、フィールドは特別な MANY_SERVICES マーカーに設定されます。
serviceNamespace 文字列 Service の Namespace

NetworkTierDetails フィールドの形式

フィールド タイプ 説明
networkTier 文字列 接続で使用されている NetworkTier。[PREMIUM、STANDARD、FIXED_STANDARD、UNKNOWN] のいずれか。

モニタリング

外部パススルー ネットワーク ロードバランサは、主要な指標を Cloud Monitoring にエクスポートします。

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

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

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

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

コンソール

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

    [Monitoring] に移動

  2. ナビゲーション パネルで [ダッシュボード] を選択します。

  3. [Google Cloud Load Balancers] ダッシュボードを選択します。すべてのロードバランサが表示されます。

  4. ロードバランサのリストからロードバランサ名を選択します。

[External passthrough Network Load Balancer details] ペインで、選択したロードバランサのさまざまな詳細を確認できます。このペインには、現在の構成が表示されます。

[KEY METRICS] ペインには、主な指標のグラフが表示されます。特定の内訳を確認するには、[内訳] をクリックしてください。このペインには過去の構成に基づくデータが表示されますが、[External passthrough Network Load Balancer details] ペインには現在の構成のみが表示されます。詳細については、ダッシュボードとグラフをご覧ください。

Monitoring カスタム ダッシュボードを定義する

カスタム パススルー ネットワーク ロードバランサの指標に関しては、カスタムの Monitoring ダッシュボードを作成できます。

収集された指標のリストについては、指標とリソースタイプをご覧ください。結果のフィルタリングに使用できる属性のリストについては、フィルタをご覧ください。

コンソール

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

    [Monitoring] に移動

  2. [ダッシュボード] > [CREATE DASHBOARD] を選択します。

  3. [Add chart] をクリックします。

  4. グラフにタイトルを付けます。

  5. 指標とフィルタを選択します。

    外部パススルー ネットワーク ロードバランサの指標を見つけるには、loadbalancing.googleapis.com/l3/external 接頭辞を検索します。

  6. [保存] をクリックします。

Monitoring アラートを定義する

さまざまな外部パススルー ネットワーク ロードバランサの指標に Monitoring アラートを定義できます。

コンソール

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

    [Monitoring] に移動

  2. [アラート] > [CREATE POLICY] を選択します。

  3. リソースタイプと指標を選択します。

    外部パススルー ネットワーク ロードバランサのリソースタイプと指標を見つけるには、[Find resource type and metric] フィールドで loadbalancing.googleapis.com/l3/external を検索します。

  4. アラートをトリガーするタイミングを設定するには、[Configuration] を指定します。

  5. 必要に応じて、フィルタを追加します。

  6. [Save] をクリックします。

指標報告の頻度と保持

外部パススルー ネットワーク ロードバランサの指標は、1 分単位のバッチで Monitoring にエクスポートされます。モニタリング データは 6 週間保持されます。指標はサンプリングされたトラフィックに基づいています(サンプリング レートは動的で、調整できません)。ダッシュボードでは、1 時間(1H)、6 時間(6H)、1 日(1D)、1 週間(1W)、6 週間(6W)のデフォルト間隔でデータ分析の結果を確認できます。6 週間から 60 秒までの任意の間隔を指定して、手動で分析を行うこともできます。

指標とリソースタイプ

指標

外部パススルー ネットワーク ロードバランサの次の指標が、Monitoring に報告されます。これらの指標名は、API リクエストの作成時に使用できます。

metric_name タイプ 説明
loadbalancing.googleapis.com/l3/external/ingress_bytes_count カウンタ クライアントから外部パススルー ネットワーク ロードバランサのバックエンドに送信されるバイト数。TCP フローの場合、アプリケーション ストリーム内のバイトのみがカウントされます。
loadbalancing.googleapis.com/l3/external/ingress_packets_count カウンタ クライアントから外部パススルー ネットワーク ロードバランサのバックエンドに送信されるパケット数。
loadbalancing.googleapis.com/l3/external/egress_bytes_count カウンタ 外部パススルー ネットワーク ロードバランサのバックエンドからクライアントに送信されるバイト数。TCP フローの場合、アプリケーション ストリーム内のバイトのみがカウントされます。
loadbalancing.googleapis.com/l3/external/egress_packets_count カウンタ 外部パススルー ネットワーク ロードバランサのバックエンドからクライアントに送信されるパケット数。
loadbalancing.googleapis.com/l3/external/rtt_latencies 分布

外部パススルー ネットワーク ロードバランサ フローの TCP 接続で測定された RTT の分布。

TCP トラフィックに対してのみ使用できます。

リソースタイプ

外部パススルー ネットワーク ロードバランサは、次のリソースタイプを使用します。

  • tcp_lb_rule
  • udp_lb_rule
  • loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule

外部パススルー ネットワーク ロードバランサは、TCP、UDP、ESP、GRE、ICMP、ICMPv6 トラフィックをサポートします。

リソースタイプを tcp_lb_rule または udp_lb_rule として指定すると、モニタリング対象データを TCP または UDP プロトコルのいずれかに限定できます。リソースタイプを loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule として指定すると、TCP、UDP、ESP、GRE、ICMP、ICMPv6 など、サポートされているすべてのプロトコルをモニタリングできます。

フィルタ

指標は、外部パススルー ネットワーク ロードバランサごとに集計されます。集計された指標は、次のディメンションでフィルタ処理できます。

tcp_lb_rule または udp_lb_rule のリソースラベル

クエリはリソースによって制限できます。また、これらの値で結果をグループ化することもできます。

resource.label.<var>LABEL_KEY</var>:
label_key タイプ 説明
project 文字列 このリソースに関連付けられた Google Cloud プロジェクトの ID。
load_balancer_name 文字列 ロードバランサの名前。
region 文字列 ロードバランサのバックエンドが配置されているリージョン(例: us-central1europe-west1asia-east1)。
network_name 文字列 ロードバランサのバックエンドが存在する VPC ネットワーク。
backend_target_type 文字列 外部パススルー ネットワーク ロードバランサがターゲット プールベースまたはバックエンド サービスベースのどちらであるかを示します。有効な値は BACKEND_SERVICE または TARGET_POOL です。
backend_target_name 文字列 ターゲット プールベースの外部パススルー ネットワーク ロードバランサの場合、ターゲット プールの名前。バックエンド サービスベースの外部パススルー ネットワーク ロードバランサの場合、バックエンド サービスの名前。
forwarding_rule_name 文字列 転送ルールの名前。
forwarding_rule_network_tier 文字列 転送ルールのネットワーク階層
backend_name 文字列

接続を処理したバックエンドの名前。

バックエンド サービスベースの外部パススルー ネットワーク ロードバランサの場合、値は接続を処理したバックエンド インスタンス グループまたはネットワーク エンドポイント グループ(NEG)の名前です。

ターゲット プールベースの外部パススルー ネットワーク ロードバランサの場合、値はターゲット プールの名前です。

backend_type 文字列

接続を処理したバックエンドのタイプ。

バックエンド サービスベースの外部パススルー ネットワーク ロードバランサの場合、値は INSTANCE_GROUP または NETWORK_ENDPOINT_GROUP のいずれかになります。

ターゲット プールベースの外部パススルー ネットワーク ロードバランサの場合、値は TARGET_POOL です。

backend_scope 文字列

バックエンド サービスベースの外部パススルー ネットワーク ロードバランサの場合、バックエンド インスタンス グループまたは NEG のゾーンあるいはリージョン。

ターゲット プール ベースのネットワーク ロードバランサの場合、値は UNSUPPORTED_FOR_TARGET_POOL です。

backend_scope_type 文字列

接続を処理したバックエンド グループのスコープのタイプ。有効な値は ZONE または REGION です。

ターゲット プール ベースのネットワーク ロードバランサの場合、値は UNSUPPORTED_FOR_TARGET_POOL です。

backend_failover_configuration 文字列 接続を処理したバックエンド グループのフェイルオーバー構成。有効な値は PRIMARYBACKUP、または UNKNOWN です。
backend_subnetwork_name 文字列 接続を受信したバックエンドのサブネットワークの名前。
endpoint_zone 文字列 接続を処理したバックエンド VM のゾーン。

loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule のリソースラベル

クエリはリソースによって制限できます。また、これらの値で結果をグループ化することもできます。

resource.label.<var>LABEL_KEY</var>:
label_key タイプ 説明
project 文字列 このリソースに関連付けられた Google Cloud プロジェクトの ID。
region 文字列 ロードバランサのバックエンドがあるリージョン(例: us-central1europe-west1asia-east1)。
backend_network_name 文字列 ロードバランサのバックエンドが存在する VPC ネットワーク。
backend_target_type 文字列 接続を処理したバックエンド ターゲットのタイプ。有効な値は BACKEND_SERVICE または TARGET_POOL です。
backend_service_name 文字列 接続を処理したバックエンド サービスの名前。backend_target_typeTARGET_POOL の場合、値は UNSUPPORTED_FOR_TARGET_POOL です。
primary_target_pool 文字列 プライマリ ターゲット プールの名前。backend_target_typeBACKEND_SERVICE の場合、値は UNSUPPORTED_FOR_BACKEND_SERVICE です。
target_pool 文字列 ターゲット プールの名前backend_target_typeBACKEND_SERVICE の場合、値は UNSUPPORTED_FOR_BACKEND_SERVICE です。
forwarding_rule_name 文字列 外部パススルー ネットワーク ロードバランサの転送ルールの名前。
backend_group_name 文字列 接続を処理したバックエンド グループの名前。backend_target_typeTARGET_POOL の場合、値は UNSUPPORTED_FOR_TARGET_POOL です。
backend_group_type 文字列

接続を処理したバックエンド グループのタイプ。

backend_target_typeBACKEND_SERVICE の場合、値は INSTANCE_GROUP または NETWORK_ENDPOINT_GROUP です。

backend_target_typeTARGET_POOL の場合、値は UNSUPPORTED_FOR_TARGET_POOL です。

backend_group_scope 文字列 接続を処理したバックエンド グループ(ゾーンまたはリージョンの名前)のスコープ。backend_target_typeTARGET_POOL の場合、値は UNSUPPORTED_FOR_TARGET_POOL です。
backend_subnetwork_name 文字列 接続を受信したバックエンドのサブネットワークの名前。
backend_zone 文字列 接続を処理したバックエンド VM のゾーン。

指標ラベル

クエリは指標ラベルで制限できます。また、これらの値で結果をグループ化することもできます。

metric.label.<var>LABEL_KEY</var>:
label_key タイプ 説明
client_country 文字列 外部パススルー ネットワーク ロードバランサへの接続を開始したクライアントの国。
client_continent 文字列 外部パススルー ネットワーク ロードバランサへの接続を開始したクライアントの大陸。
protocol 文字列

loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule リソースの接続のプロトコル。

tcp_lb_rule リソースと udp_lb_rule リソースでは、このフィールドは空白のままにします。

API リクエストのモニタリング

Monitoring API の v3 projects.timeSeries.list リクエストを使用して、外部パススルー ネットワーク ロードバランサの指標に関する任意のクエリを構築できます。さまざまな定義の正確な構造は、一般的なモニタリング フィルタのセマンティクスに従います。

API リクエストの例

  • 2019 年 7 月 1 日の UTC 午後 12 時 00 分から午後 12 時 02 分に、プロジェクト内のすべての外部パススルー ネットワーク ロードバランサから送信された合計バイト数を 1 分の集計で取得します。

    timeSeries.list のパラメータ:

    • name: projects/PROJECT_ID
    • Filter: resource.type = "tcp_lb_rule" AND metric.name="loadbalancing.googleapis.com/l3/external/egress_bytes_count"
    • interval.start_time: 2019-07-01T12:00:00Z
    • interval.end_time: 2019-07-01T12:02:00Z
    • aggregation.alignmentPeriod: 60s
    • aggregation.crossSeriesReducer: REDUCE_SUM
    • aggregation.perSeriesAligner: ALIGN_SUM
  • 2019 年 7 月 1 日の UTC 午後 12 時 19 分から 12 時 20 分の間のプロジェクトでの外部パススルー ネットワーク ロードバランサ全体の RTT 測定値の中央値を、クライアントの国別に取得します。

    timeSeries.list のパラメータ:

    • name: projects/PROJECT_ID
    • Filter: resource.type = "tcp_lb_rule" AND metric.name="loadbalancing.googleapis.com/l3/external/rtt_latencies"
    • interval.start_time: 2019-07-01T12:19:00Z
    • interval.end_time: 2019-07-01T12:20:00Z
    • aggregation.alignmentPeriod: 60s
    • aggregation.crossSeriesReducer: REDUCE_SUM
    • aggregation.groupByFields: metric.label.client_country
    • aggregation.perSeriesAligner: ALIGN_PERCENTILE_50
  • 2019 年 7 月 1 日の UTC 午後 12 時 19 分から 12 時 20 分の間の特定の外部パススルー ネットワーク ロードバランサからのバイト数の合計を、エンドポイント ゾーンとクライアントの大陸別に取得します。

    timeSeries.list のパラメータ:

    • name: projects/PROJECT_ID
    • Filter: resource.type = "tcp_lb_rule" AND resource.label.load_balancer_name = "netlb-bs-1" AND metric.name="loadbalancing.googleapis.com/l3/external/ingress_bytes_count"
    • interval.start_time: 2019-07-01T12:19:00Z
    • interval.end_time: 2017-07-01T12:20:00Z
    • aggregation.alignmentPeriod: 60s
    • aggregation.crossSeriesReducer: REDUCE_SUM
    • aggregation.groupByFields: metric.label.client_continent
    • aggregation.groupByFields: resource.label.endpoint_zone
    • aggregation.perSeriesAligner: ALIGN_SUM

次のステップ