内部 HTTP(S) 負荷分散のロギングとモニタリング

このドキュメントでは、内部 HTTP(S) 負荷分散のロギングとモニタリングの指標について説明します。

ロギング

ロギングは、バックエンド サービス単位で有効にできます。1 つの内部 HTTP(S) ロードバランサの URL マップで複数のバックエンド サービスを参照できます。このため、構成に応じて複数のバックエンド サービスでロギングを有効にする必要がある場合があります。

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

コンソール

  1. Google Cloud コンソールの [ロード バランシング] ページに移動します。
    [ロード バランシング] ページに移動
  2. ロードバランサの名前をクリックします。
  3. [編集] をクリックします。
  4. [バックエンドの設定] をクリックします。
  5. バックエンド サービスの横にある [編集] をクリックします。
  6. [高度な構成(セッション アフィニティ、コネクション ドレインのタイムアウト)] をクリックします。
  7. [ロギングを有効にする] をクリックします。
  8. [サンプルレート] の値を選択します。0.0 から 1.0 まで(デフォルト)の任意の値に設定できます。
  9. [更新] をクリックします。

gcloud

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

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

ここで

  • --enable-logging は、バックエンド サービスのロギングを有効にします。
  • --logging-sample-rate には、0.0 から 1.0 までの値を指定できます。0.0 を設定すると、リクエストはまったくロギングされません。1.0 を設定すると、すべてのリクエストがロギングされます。--enable-logging パラメータの場合のみ有意です。ロギングを有効にしても、サンプリング レートが 0.0 であれば、ロギングを無効にしているのと同じ結果になります。

バックエンド サービスでロギングを有効にすると、Cloud Logging を使用して各 HTTP(S) リクエストがロギングされます。

ログの表示方法

ログを表示するには、ログ エクスプローラに移動します。

内部 HTTP(S) ロードバランサのログは、最初はネットワーク別に、次にリージョン別にインデックス化されます。

  • すべての内部 HTTP(S) ロードバランサのログを表示するには、最初のプルダウン メニューで [内部 HTTP/S 負荷分散ルール] を選択します。
  • 1 つのネットワークのログのみを表示するには、[内部 HTTP/S 負荷分散ルール] を選択して、ネットワークの名前を選択します。
  • ネットワーク内の 1 つのリージョンのみのログを表示するには、[内部 HTTP/S 負荷分散ルール] > NETWORK > REGION の順に選択します。

通常、ブール型のログフィールドは、フィールドの値が true の場合にのみ表示されます。ブール フィールドの値が false の場合、そのフィールドはログから省略されます。

ログフィールドには UTF-8 エンコードが適用されます。UTF-8 以外の文字列は、疑問符に置き換えられます。

リソースログ(resource.type="internal_http_lb_rule")のログベースの指標のエクスポートを構成できます。作成される指標は、内部 HTTP/S 負荷分散ルール(ログベースの指標)リソースに基づいています。このリソースは Cloud Monitoring ダッシュボードで使用できます。

[Monitoring] に移動

ログの内容

HTTP(S) 負荷分散ログエントリには、HTTP(S) トラフィックのモニタリングとデバッグに役立つ情報が含まれています。ログエントリには次のタイプの情報が含まれています。

  • 重大度、プロジェクト ID、プロジェクト番号、タイムスタンプなど、ほとんどの Google Cloud ログで表示される一般情報
  • HttpRequest ログフィールド

ログのフィールド

ログは LogEntry proto です。

フィールド 説明
logName 文字列 このログエントリが属するログのリソース名。
"projects/PROJECT_ID/logs/requests" の形式です。
timestamp タイムスタンプ形式 リクエストが開始された時刻。
severity LogSeverity 形式 ログエントリの重大度。デフォルトは LogSeverity.DEFAULT です。
httpRequest HttpRequest オブジェクト ログに記録される HTTP(S) リクエストを記述する HttpRequest プロトコル。
trace 文字列 ログエントリに関連付けられているトレースのリソース名。相対リソース名が含まれている場合、https://tracing.googleapis.com を基準とした相対的な名前になります。例: projects/PROJECT_ID/traces/06796866738c859f2f19b7cfb3214824

内部 HTTP(S) 負荷分散は、このフィールドをサポートしていません。

spanId 文字列 ログエントリに関連付けられているトレース内のスパン ID。トレーススパンの場合、この文字列は Trace API v2 と同じ形式で、8 バイトの配列を 16 文字の 16 進数にエンコードした値(例: 000000000000004a)になります。

内部 HTTP(S) 負荷分散は、このフィールドをサポートしていません。

resource MonitoredResource オブジェクト このログエントリに関連付けられたモニタリング対象リソース。MonitoredResource オブジェクトをご覧ください。

MonitoredResource

フィールド 説明
networkName 文字列 ロードバランサの VPC ネットワークの名前。
region 文字列 ロードバランサの Google Cloud リージョンの名前。
urlMapName 文字列 バックエンド サービスを選択するように構成された URL マップ オブジェクトの名前。
forwardingRuleName 文字列 転送ルール オブジェクトの名前。
targetProxyName 文字列 転送ルールで参照されるターゲット プロキシ オブジェクトの名前。
matchedUrlPathRule 文字列 URL マップキーの一部として構成された URL マップ パスルールまたはルートルール。フォールバックとして UNMATCHED または UNKNOWN の場合もあります。
  • UNMATCHED は、URL パスルールに一致しないリクエストのため、デフォルトのパスルールを使用します。
  • UNKNOWN は内部エラーを表します。
backendTargetName 文字列 リクエストを処理するために選択されたバックエンドの名前。リクエストと一致する URL マップのパスルールまたはルートルールに基づいて選択されます。
backendTargetType 文字列 バックエンド ターゲットのタイプ(BACKEND_SERVICE / UNKNOWN)。
backendName 文字列 バックエンド インスタンス グループまたは NEG の名前。
backendType 文字列 インスタンス グループまたは NEG のいずれかのバックエンドのタイプ。
backendScope 文字列 バックエンドの範囲。ゾーン名またはリージョン名です。backendName が不明な場合はいつでも、UNKNOWN である可能性があります。
backendScopeType 文字列 バックエンドの範囲(REGION/ZONE)。backendName が不明な場合はいつでも、UNKNOWN である可能性があります。

モニタリング

HTTP(S) 負荷分散は、モニタリング データを Monitoring にエクスポートします。

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

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

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

Cloud Monitoring の指標の表示

Metrics Explorer を使用してモニタリング対象リソースの指標を表示する手順は次のとおりです。

  1. Google Cloud Console で、Monitoring の [Metrics Explorer] ページに移動します。
  2. Metrics Explorer に移動

  3. ツールバーで [エクスプローラ] タブを選択します。
  4. [CONFIGURATION] タブを選択します。
  5. [指標を選択] メニューを開き、フィルタバーに「Internal HTTP/S Load Balancing Rule」と入力し、サブメニューを使用して特定のリソースタイプと指標を選択します。
    1. [ACTIVE RESOURCES] メニューで、[Internal HTTP/S Load Balancing Rule] を選択します。
    2. 指標を選択するには、[ACTIVE METRIC CATEGORIES] メニューと [ACTIVE METRICS] メニューを使用します。
    3. [適用] をクリックします。
  6. 省略可: データの表示方法を構成するには、フィルタを追加し、[Group By]、[Aggregator]、グラフタイプの各メニューを使用します。たとえば、リソースラベルや指標ラベルごとにグループ化できます。詳細については、Metrics Explorer 使用時の指標の選択をご覧ください。
  7. 省略可: グラフの設定を変更します。
    • 割り当てと、1 日に 1 つのサンプルを報告するその他の指標については、期間を 1 週間以上に設定し、プロットタイプを [積み上げ棒グラフ] に設定します。
    • 分布値の指標の場合、プロットタイプをヒートマップ グラフに設定します。

アラート ポリシーを定義する

アラート ポリシーを作成して指標の値をモニタリングすると、条件に違反した場合に通知できます。

  1. Google Cloud Console で、[Monitoring] ページに移動します。

    [Monitoring] に移動

  2. [Monitoring] のナビゲーション ペインで、[ アラート] を選択します。
  3. 通知チャンネルを作成せずに通知を受け取る場合は、[EDIT NOTIFICATION CHANNELS] をクリックして、通知チャンネルを追加します。チャンネルを追加したら、[アラート] ページに戻ります。
  4. [アラート] ページで、[CREATE POLICY] をクリックします。
  5. 指標を選択するには、[指標の選択] メニューを開き、次の操作を行います。
    1. メニューを関連するエントリに限定するには、フィルタバーに「Internal HTTP/S Load Balancing Rule」と入力します。結果が表示されない場合は、[有効なリソースと指標のみを表示] をオフに切り替えます。
    2. [Resource type] で、[Internal HTTP/S Load Balancing Rule.] を選択します。
    3. 指標カテゴリ指標を選択して、[適用] を選択します。
  6. [次へ] をクリックします。
  7. [Configure alert trigger] ページの設定によって、アラートがトリガーされるタイミングが決まります。条件タイプを選択し、必要に応じてしきい値を指定します。詳しくは、条件トリガーをご覧ください。
  8. [次へ] をクリックします。
  9. (省略可)アラート ポリシーに通知を追加するには、[通知チャネル] をクリックします。ダイアログで、メニューから 1 つ以上の通知チャンネルを選択し、[OK] をクリックします。
  10. (省略可)インシデントの自動クローズ期間を更新します。このフィールドは、指標データがない場合に Monitoring がインシデントを閉じるタイミングを決定します。
  11. (省略可)[Documentation] をクリックして、通知メッセージに追加する情報を入力します。
  12. [アラート名] をクリックして、アラート ポリシーの名前を入力します。
  13. [Create Policy] をクリックします。
詳細については、アラート ポリシーをご覧ください。

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

内部 HTTP(S) ロード バランシングの指標に関しては、カスタムの Monitoring ダッシュボードを作成できます。

  1. Google Cloud コンソールで [Monitoring] に移動します。
    [Monitoring] に移動
  2. [ダッシュボード] > [CREATE DASHBOARD] を選択します。
  3. [グラフを追加] をクリックします。
  4. グラフにタイトルを付けます。
  5. 指標とフィルタを選択します。指標のリソースタイプは、Internal HTTP/S Load Balancer です。
  6. [保存] をクリックします。

指標報告の頻度と保持

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

内部 HTTP(S) ロードバランサのモニタリング指標

Monitoring に報告される内部 HTTP(S) ロードバランサの指標は次のとおりです。

指標 FQDN 説明
リクエスト数 loadbalancing.googleapis.com/https/internal/request_count 内部 HTTP(S) ロードバランサによって配信されるリクエスト数。
リクエスト バイト数 loadbalancing.googleapis.com/https/internal/request_bytes クライアントから内部 HTTP(S) ロードバランサへのリクエストとして送信されたバイト数。
レスポンス バイト数 loadbalancing.googleapis.com/https/internal/response_bytes 内部 HTTP(S) ロードバランサからクライアントへのレスポンスとして送信されたバイト数。
総レイテンシ loadbalancing.googleapis.com/https/internal/total_latencies レイテンシの分布(ミリ秒単位)。リクエストの最初のバイトがプロキシで受信された時点からレスポンスの最後のバイトがプロキシから送信された時点までのレイテンシ。
バックエンド レイテンシ loadbalancing.googleapis.com/https/internal/backend_latencies レイテンシの分布(ミリ秒単位)。プロキシからバックエンドにリクエストの最初のバイトが送信された時点から、バックエンドからのレスポンスの最後のバイトがプロキシで受信された時点までのレイテンシ。

内部 HTTP(S) ロードバランサ指標のディメンションをフィルタ処理する

指標は、HTTP(S) ロードバランサごとに集計されます。集計された指標は、次のディメンション(*)でフィルタ処理できます。

プロパティ 説明
BACKEND_SCOPE クライアント リクエストを処理したバックエンド グループの Google Cloud ゾーンまたはリージョン。バックエンド グループが割り当てられていない場合は、特殊文字列が返されます。例: us-central1-aeurope-west1-basia-east1UNKNOWN
PROXY_REGION 内部 HTTP(S) ロードバランサ、クライアント、バックエンドのリージョン。例: us-central1europe-west1asia-east1
バックエンド クライアント リクエストを処理したバックエンド インスタンス グループまたは NEG の名前。
BACKEND_TARGET クライアント リクエストを処理したバックエンド サービスの名前。
MATCHED_URL_RULE クライアント HTTP(S) リクエストのプレフィックスに一致する URL マップ パスルールまたはルートルール(最大 50 文字)。

Response code class fraction 指標はロードバランサ全体でサポートされています。これ以上の粒度はサポートされません。

次のステップ