ネットワーク負荷分散のモニタリング

このドキュメントでは、ネットワーク負荷分散における Cloud Monitoring について説明します。

ネットワーク負荷分散によって、主要な指標が Monitoring にエクスポートされます。

Monitoring 指標は次の目的で使用します。

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

カスタム ダッシュボードを作成して、アラートをセットアップし、Monitoring を通して指標を照会できます。

Cloud Console を使用したモニタリングとアラートの構成

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

カスタムの Monitoring ダッシュボードの定義

ネットワーク負荷分散の指標に関しては、カスタムの Monitoring ダッシュボードを作成できます。

  1. Google Cloud Console で [Monitoring] に移動します。
    [Monitoring] に移動
  2. [ダッシュボード] > [Create Dashboard] を選択します。
  3. [Add chart] をクリックします。
  4. グラフにタイトルを付けます。
  5. 指標とフィルタを選択します。
    loadbalancing.googleapis.com/l3/external 接頭辞を検索することで、ネットワーク負荷分散の指標を見つけることができます。
  6. [Save] をクリックします。

Monitoring アラートの定義

さまざまなネットワーク負荷分散の指標に Monitoring アラートを定義できます。

  1. Google Cloud Console で [Monitoring] に移動します。
    [Monitoring] に移動
  2. [アラート] > [Create Policy] を選択します。
  3. リソースタイプと指標を選択します。
    [Find resource type and metric] フィールドで loadbalancing.googleapis.com/l3/external を検索することで、ネットワーク負荷分散のリソースの種類と指標を見つけることができます。
  4. アラートをトリガーするタイミングを設定するには、[Configuration] を指定します。
  5. 必要に応じて、フィルタを追加します。
  6. [Save] をクリックします。

指標報告の頻度と保持

ネットワーク ロードバランサの指標は、1 分単位のバッチで Monitoring にエクスポートされます。モニタリング データは 6 週間保持されます。ダッシュボードでは、1h(1 時間)、6h(6 時間)、1d(1 日)、1w(1 週間)、6w(6 週間)のデフォルト間隔でデータ分析の結果を確認できます。6 週間(6w)から 60 秒(60s)の任意の間隔で手動で分析をリクエストできます。

指標とリソースタイプ

指標

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

metric_name 説明
loadbalancing.googleapis.com/l3/external/ingress_bytes_count カウンタ クライアントからネットワーク ロードバランサのバックエンドに送信されるバイト数。TCP フローの場合、アプリケーション ストリーム内のバイトのみがカウントされます。60 秒ごとにサンプリングされます。サンプリング後、データは最長 150 秒間表示されません。
loadbalancing.googleapis.com/l3/external/ingress_packets_count カウンタ クライアントからネットワーク ロードバランサのバックエンドに送信されるパケット数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 150 秒間表示されません。
loadbalancing.googleapis.com/l3/external/egress_bytes_count カウンタ ネットワーク ロードバランサのバックエンドからクライアントに送信されるバイト数。TCP フローの場合、アプリケーション ストリーム内のバイトのみがカウントされます。60 秒ごとにサンプリングされます。サンプリング後、データは最長 150 秒間表示されません。
loadbalancing.googleapis.com/l3/external/egress_packets_count カウンタ ネットワーク ロードバランサのバックエンドからクライアントに送信されるパケット数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 150 秒間表示されません。
loadbalancing.googleapis.com/l3/external/rtt_latencies

TCP トラフィックに対してのみ使用できます。
分布 ネットワーク負荷バランサフローの TCP 接続で測定された RTT の分布。60 秒ごとにサンプリングされます。サンプリング後、データは最長 150 秒間表示されません。

リソースタイプ

resource.type = tcp_lb_ruleまたはudp_lb_rule

ネットワーク ロードバランサは、TCP トラフィックまたは UDP トラフィックをサポートします。リソースタイプを指定し、データを TCP または UDP ロードバランサに制限できます。

フィルタ

リソースラベル

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

resource.label.<var>label_key</var>:
label_key 説明
project 文字列 このリソースに関連付けられている Google Cloud プロジェクトの識別子(my-project など)。
load_balancer_name 文字列 ロードバランサの名前。
region 文字列 ロードバランサのバックエンド インスタンスがあるリージョン: us-central1europe-west1asia-east1
network_name 文字列 ロードバランサのバックエンドが存在する VPC ネットワーク。
backend_target_type 文字列 接続を処理したバックエンド ターゲットのタイプ。有効な値は BACKEND_SERVICETARGET_POOL です。
backend_target_name 文字列 このネットワーク ロードバランサ用に構成されたバックエンド ターゲットの名前。
forwarding_rule_name 文字列 クライアントがネットワーク ロードバランサに接続するために使用する転送ルールの名前。
forwarding_rule_network_tier 文字列 転送ルールのネットワーク階層
backend_name 文字列 接続を処理したバックエンド インスタンス グループの名前。バックエンド サービスベースのネットワーク ロードバランサでのみ使用できます。
backend_type 文字列 接続を処理したバックエンドのタイプ。バックエンド サービスベースのネットワーク ロードバランサでのみ使用できます。有効な値は INSTANCE_GROUP のみです。ターゲット プールベースのネットワーク ロードバランサの場合、このフィールドは UNSUPPORTED_FOR_TARGET_POOL に設定されます。
backend_scope 文字列 接続を処理したバックエンド グループ(ゾーンまたはリージョンの名前)のスコープ。
backend_scope_type 文字列 接続を処理したバックエンド グループのスコープのタイプ。有効な値は ZONEREGION です。
backend_failover_configuration 文字列 接続を処理したバックエンド グループのフェイルオーバー構成。有効な値は PRIMARYBACKUP、または UNKNOWN です。
backend_subnetwork_name 文字列 接続を受信したインスタンスのサブネットワークの名前。
endpoint_zone 文字列 接続を処理したエンドポイント(Compute Engine / GKE インスタンス)のゾーン。

指標ラベル

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

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

Monitoring API のリクエスト

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

API リクエストの例

  1. 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
  1. 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
  1. 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

次のステップ