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

    [モニタリング] に移動

  2. [Monitoring] のナビゲーション パネルで、 [Metrics Explorer] をクリックします。
  3. [Metric] タブが選択されていることを確認します。
  4. [Find resource type and metric] フィールドで、リソースと指標をメニューから選択するか、リソースと指標の名前を入力します。次の情報を使用して、フィールドに入力します。
    1. [リソース] で、[internal_http_lb_rule] を選択または入力します。ここでリソース [内部 HTTP/S 負荷分散ルール] を選択します。
    2. [指標] で、メニューから選択します。
  5. データの表示方法を変更するには、[Filter]、[Group By]、[Aggregator] の各メニューを使用します。たとえば、リソースラベルや指標ラベルごとにグループ化できます。詳しくは、指標の選択をご覧ください。

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

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

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

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

    [モニタリング] に移動

  2. Monitoring のナビゲーション パネルで [アラート] を選択し、次に [Create Policy] を選択します。
  3. [Add Condition] をクリックします。
    1. [ターゲット] ペインの設定で、モニタリングするリソースと指標を指定します。[Find resource type and metric] フィールドで、リソース [内部 HTTP/S ロードバランサ] を選択します。次に、指標リストから指標を選択します。
    2. アラート ポリシーの [Configuration] ペインの設定で、アラートがトリガーされるタイミングを決定します。このペインのほとんどのフィールドにはデフォルト値が入力されています。ペインのフィールドの詳細については、アラート ポリシーのドキュメントの構成をご覧ください。
    3. [追加] をクリックします。
  4. 通知セクションに移動するには、[次へ] をクリックします。
  5. (省略可)アラート ポリシーに通知を追加するには、[通知チャネル] をクリックします。ダイアログで、メニューから 1 つ以上の通知チャネルを選択し、[OK] をクリックします。

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

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

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

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

  1. Google Cloud Console で [Monitoring] に移動します。
    [Monitoring] に移動
  2. [ダッシュボード] > [ダッシュボードを作成] を選択します。
  3. [グラフを追加] をクリックします。
  4. グラフにタイトルを付けます。
  5. 指標とフィルタを選択します。指標のリソースタイプは、内部 HTTP(S) ロードバランサです。
  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 指標はロードバランサ全体でサポートされています。これ以上の粒度はサポートされません。

次のステップ