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

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

ロギング

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

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

Console

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

gcloud

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

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] ページに移動します。

    [Monitoring] に移動

  2. [Monitoring] のナビゲーション パネルで、 [Metrics Explorer] をクリックします。
  3. [Configuration] タブを選択し、[Resource type] と [Metric] を入力または選択します。次の情報を使用して、フィールドに入力します。
    1. [Resource] で、[internal_http_lb_rule] を選択または入力します。この設定で、リソース [Internal HTTP/S Load Balancing Rule] を選択します。
    2. [指標] で、メニューから選択します。
  4. (省略可)データの表示方法を構成するには、[Filter]、[Group By]、[Aggregator] の各メニューを使用します。たとえば、リソースラベルや指標ラベルごとにグループ化できます。詳しくは、指標の選択をご覧ください。

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

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

1 つ以上の内部 HTTP/S ロードバランサ リソースをモニタリングするアラート ポリシーを作成するには、次の操作を行います。

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

    [Monitoring] に移動

  2. Monitoring のナビゲーション パネルで [アラート] を選択し、次に [Create Policy] を選択します。
  3. この手順を進めるにあたり、[RETURN TO LEGACY UI] ボタンが表示されている場合はクリックしてください。アラート ポリシーを作成するには、プレビュー版インターフェースを使用します。ただし、この手順は以前の UI を対象としています。
  4. [ADD CONDITION] をクリックします。
    1. [Target] ペインの設定で、モニタリングするリソースと指標を指定します。[Find resource type and metric] フィールドで、リソース [内部 HTTP/S ロードバランサ] を選択します。次に、指標リストから指標を選択します。
    2. アラート ポリシーの [Configuration] ペインの設定で、アラートがトリガーされるタイミングを決定します。このペインのほとんどのフィールドにはデフォルト値が入力されています。ペインのフィールドの詳細については、アラート ポリシーのドキュメントの構成をご覧ください。
    3. [ADD] をクリックします。
  5. 通知セクションに移動するには、[次へ] をクリックします。
  6. (省略可)アラート ポリシーに通知を追加するには、[通知チャネル] をクリックします。ダイアログで、メニューから 1 つ以上の通知チャネルを選択し、[OK] をクリックします。

    追加する通知チャネルが一覧にない場合は、[通知チャネルを管理] をクリックします。新しいブラウザタブの [通知チャネル] ページが表示されます。このページで、構成された通知チャンネルを更新できます。更新が完了したら、元のタブに戻って 更新アイコンをクリックし、アラート ポリシーに追加する通知チャンネルを選択します。

  7. ドキュメントのセクションに移動するには、[次へ] をクリックします。
  8. [名前] をクリックし、アラート ポリシーの名前を入力します。
  9. (省略可)[Documentation] をクリックして、通知メッセージに追加する情報を入力します。
  10. [Save] をクリックします。
詳細については、アラート ポリシーをご覧ください。

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

内部 HTTP(S) 負荷分散の指標に関しては、カスタムの Monitoring ダッシュボードを作成できます。

  1. Google Cloud Console で [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 指標はロードバランサ全体でサポートされています。これ以上の粒度はサポートされません。

次のステップ