このページでは、プロキシ ネットワーク ロードバランサに Cloud Logging と Cloud Monitoring を構成して使用する方法について説明します。
リソースのモニタリング
次の表に、ロードバランサのリソース名を示します。
リージョン外部プロキシ ネットワーク ロードバランサ リージョン内部プロキシ ネットワーク ロードバランサ クロスリージョン内部プロキシ ネットワーク ロードバランサ(プレビュー) グローバル外部プロキシ ネットワーク ロードバランサ |
従来のプロキシ ネットワーク ロードバランサ | |
---|---|---|
Logging のモニタリング対象のリソースタイプ | 「プロキシ ネットワーク ロードバランサのルール」l4_proxy_rule |
「グローバル外部プロキシ ネットワーク ロードバランサのルール」tcp_ssl_proxy_rule |
Monitoring のモニタリング対象のリソースタイプ | 「プロキシ ネットワーク ロードバランサのルール」l4_proxy_rule |
「グローバル外部プロキシ ネットワーク ロードバランサのルール」tcp_ssl_proxy_rule |
プロキシ ネットワーク ロードバランサのロギング
ログは、ロードバランサのトラブルシューティングとモニタリングに有用な情報を提供します。ログは接続ごとに集約され、各接続がサービスを提供するバックエンドにどのようにルーティングされるかについての分析情報を提供します。
ログの使用に追加料金はかかりません。ただし、ログのインポート方法に応じて、Cloud Logging、BigQuery、Pub/Sub のいずれかの標準料金が適用されます。ログを有効にしても、ロードバランサのパフォーマンスに影響はありません。
ログのサンプリングと収集
ロードバランサのバックエンド仮想マシン(VM)インスタンスとの送受信接続がサンプリング対象になります。これらのサンプリングされた接続が処理され、ログが生成されます。logConfig.sampleRate パラメータに従って、ログエントリとして出力される接続の割合を制御します。logConfig.sampleRate
が 1.0
(100%)の場合、すべての接続のログが生成され、Cloud Logging に書き込まれます。
新しいバックエンド サービスでロギングを有効にする
gcloud
gcloud compute backend-services create
コマンドを使用します。
リージョン外部プロキシ ネットワーク ロードバランサとリージョン内部プロキシ ネットワーク ロードバランサの場合:
gcloud compute backend-services create BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=SAMPLE_RATE
グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:
gcloud compute backend-services create BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=SAMPLE_RATE
次のように置き換えます。
BACKEND_SERVICE
: バックエンド サービスの名前。REGION
: 作成するバックエンド サービスのリージョン。SAMPLE_RATE
: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。
フィールドの値は
0.0 to 1.0
から指定する必要があります。ここで、0.0
はログが報告されないことを意味し、1.0
は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが0.0
であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は1.0
です。
API
regionBackendServices.insert
メソッドに POST
リクエストを送信します。
リージョン内部プロキシ ネットワーク ロードバランサの場合:
{ "name": "BACKEND_SERVICE", "loadBalancingScheme": "INTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
リージョン外部プロキシ ネットワーク ロードバランサの場合:
{ "name": "BACKEND_SERVICE", "loadBalancingScheme": "EXTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
グローバル外部プロキシ ネットワーク ロードバランサの場合:
backendServices.insert
メソッドに POST
リクエストを送信します。
{ "name": "BACKEND_SERVICE", "loadBalancingScheme": "EXTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
従来のプロキシ ネットワーク ロードバランサの場合:
backendServices.insert
メソッドに POST
リクエストを送信します。
{ "name": "BACKEND_SERVICE", "loadBalancingScheme": "EXTERNAL", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
クロスリージョン内部プロキシ ネットワーク ロードバランサの場合:
backendServices.insert
メソッドに POST
リクエストを送信します。
{ "name": "BACKEND_SERVICE", "loadBalancingScheme": "INTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
次のように置き換えます。
BACKEND_SERVICE
: バックエンド サービスの名前。SAMPLE_RATE
: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。
フィールドの値は
0.0 to 1.0
から指定する必要があります。ここで、0.0
はログが報告されないことを意味し、1.0
は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが0.0
であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は1.0
です。
既存のバックエンド サービスでロギングを有効にする
gcloud
gcloud
compute backend-services update
コマンドを使用します。
リージョン外部プロキシ ネットワーク ロードバランサとリージョン内部プロキシ ネットワーク ロードバランサの場合:
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=SAMPLE_RATE
グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=SAMPLE_RATE
次のように置き換えます。
BACKEND_SERVICE
: バックエンド サービスの名前。REGION
: 作成するバックエンド サービスのリージョン。SAMPLE_RATE
: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。
フィールドの値は
0.0 to 1.0
から指定する必要があります。ここで、0.0
はログが報告されないことを意味し、1.0
は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが0.0
であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は1.0
です。
API
regionBackendServices/patch
メソッドに PATCH
リクエストを送信します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
リージョン内部プロキシ ネットワーク ロードバランサの場合:
{ "name": "BACKEND_SERVICE", "loadBalancingScheme": "INTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
リージョン外部プロキシ ネットワーク ロードバランサの場合:
{ "name": "BACKEND_SERVICE", "loadBalancingScheme": "EXTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
グローバル外部プロキシ ネットワーク ロードバランサの場合:
backendServices/patch
メソッドに PATCH
リクエストを送信します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE { "name": "BACKEND_SERVICE", "loadBalancingScheme": "EXTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
従来のプロキシ ネットワーク ロードバランサの場合:
backendServices/patch
メソッドに PATCH
リクエストを送信します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE { "name": "BACKEND_SERVICE", "loadBalancingScheme": "EXTERNAL", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
クロスリージョン内部プロキシ ネットワーク ロードバランサの場合:
backendServices/patch
メソッドに PATCH
リクエストを送信します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE { "name": "BACKEND_SERVICE", "loadBalancingScheme": "INTERNAL_MANAGED", "logConfig": { "enable": true, "sampleRate": SAMPLE_RATE } }
次のように置き換えます。
PROJECT_ID
: プロジェクトの名前。BACKEND_SERVICE
: バックエンド サービスの名前。SAMPLE_RATE
: このフィールドは、このバックエンド サービスでロギングが有効になっている場合にのみ指定できます。
フィールドの値は
0.0 to 1.0
から指定する必要があります。ここで、0.0
はログが報告されないことを意味し、1.0
は、すべての接続がログに記録されることを意味します。ロギングを有効にしても、サンプリング レートが0.0
であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は1.0
です。
既存のバックエンド サービスでロギングを無効にする
gcloud
gcloud compute backend-services update
コマンドを使用します。
リージョン外部プロキシ ネットワーク ロードバランサとリージョン内部プロキシ ネットワーク ロードバランサの場合:
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --no-enable-logging
グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --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 } }
グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、またはクロスリージョン内部プロキシ ネットワーク ロードバランサの場合:
backendServices/patch
メソッドに PATCH
リクエストを送信します。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE { "logConfig": { "enable": false } }
次のように置き換えます。
PROJECT_ID
: プロジェクトの名前。REGION
: バックエンド サービスのリージョン。BACKEND_SERVICE
: バックエンド サービスの名前。
ログを表示する
ログが Cloud Logging に取り込まれ、ログルーター シンクで除外されていない場合、Cloud Logging API と Google Cloud CLI でログを確認できます。
すべてのログを表示するには、次の操作を行います。
コンソール
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
リソースタイプに [プロキシ ネットワーク ロードバランサのルール] を選択します。
ログ名に loadbalancing.googleapis.com/flows を選択します。
コンソール クエリ
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[クエリを表示] をクリックします。
または、クエリ フィールドに次の内容を貼り付けます。
resource.type="LOG_RESOURCE_TYPE" logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
[クエリを実行] をクリックします。
次のように置き換えます。
LOG_RESOURCE_TYPE
: Logging モニタリング対象リソースタイプ。l4_proxy_rule
またはtcp_ssl_proxy_rule
のいずれかに設定します。PROJECT_ID
: プロジェクトの名前。
特定のバックエンド サービスのログを表示する
特定のバックエンド サービスのログを表示するには、次の操作を行います。
コンソール クエリ
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[クエリを表示] をクリックします。
または、クエリ フィールドに次の内容を貼り付けます。
resource.type="LOG_RESOURCE_TYPE" logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections" resource.labels.backend_service_name="BACKEND_SERVICE_NAME"
[クエリを実行] をクリックします。
次のように置き換えます。
LOG_RESOURCE_TYPE
: Logging モニタリング対象リソースタイプ。l4_proxy_rule
またはtcp_ssl_proxy_rule
のいずれかに設定します。PROJECT_ID
: プロジェクトの名前。BACKEND_SERVICE_NAME
: バックエンド サービスの名前。
バックエンド インスタンス グループのログを表示する
特定のバックエンド インスタンス グループのログを表示するには、次の操作を行います。
コンソール クエリ
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[クエリを表示] をクリックします。
または、クエリ フィールドに次の内容を貼り付けます。
resource.type="LOG_RESOURCE_TYPE" logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections" resource.labels.backend_group_name="BACKEND_GROUP_NAME"
[クエリを実行] をクリックします。
次のように置き換えます。
LOG_RESOURCE_TYPE
: Logging モニタリング対象リソースタイプ。l4_proxy_rule
またはtcp_ssl_proxy_rule
のいずれかに設定します。PROJECT_ID
: プロジェクトの名前。BACKEND_GROUP_NAME
: インスタンス グループの名前。
ログの内容
ログエントリには、トラフィックのモニタリングとデバッグに役立つ情報が含まれています。ログレコードには、すべてのログレコードのデフォルト フィールドである必須フィールドが含まれています。
フィールド | フィールドの形式 | フィールドのタイプ: 必須または省略可 | 説明 |
---|---|---|---|
severity timestamp receiveTimestamp insertID logName |
LogEntry | 必須 | ログエントリで説明されている一般的なフィールド。 |
resource | MonitoredResource | 必須 | MonitoredResource は、ログエントリに関連付けられているリソースタイプです。 MonitoredResourceDescriptor は、型名とラベルのセットを使用して |
jsonPayload | オブジェクト(Struct 形式) | 必須 | JSON オブジェクトとして表されるログエントリ ペイロード。JSON オブジェクトには、次のフィールドが含まれています。
|
ログのフィールド
ログレコードには、すべてのログレコードのデフォルト フィールドである必須フィールドが含まれています。
一部のログフィールドでは、所定のフィールドに複数のデータが含まれています。これらのログフィールドはマルチ フィールド形式です。たとえば、connection
フィールドは IpConnection
形式で、送信元と宛先の IP アドレスとポート、およびプロトコルが 1 つのフィールドに格納されます。これらのマルチ フィールドのログフィールドについては、次のレコード形式の表で説明します。
次の表に、リソース l4_proxy_rule で必要なすべてのログフィールドを示します。
フィールド | フィールドの形式 | 説明 |
---|---|---|
connection | IpConnection | この接続を説明する 5 タプル。 |
startTime | 文字列 | クライアントからの接続がロードバランサで受け入れられた時点のタイムスタンプ(RFC 3339 の日付文字列形式)。 |
endTime | 文字列 | クライアントまたはバックエンドが接続を終了した時点のタイムスタンプ(RFC 3339 の日付文字列形式)。 |
bytesSent | int64 | サーバーからクライアントに送信されるバイト数。 |
bytesReceived | int64 | サーバーがクライアントから受信したバイト数。 |
IpConnection フィールドの形式
フィールド | タイプ | 説明 |
---|---|---|
clientIp | 文字列 | クライアント IP アドレス |
clientPort | int32 | クライアント ポート。TCP 接続と UDP 接続に対してのみ設定します。 |
serverIp | 文字列 | サーバーの IP アドレス(転送ルールの IP) |
serverPort | int32 | サーバーポート。TCP 接続と UDP 接続に対してのみ設定します。 |
protocol | int32 | IANA プロトコル番号 |
リソースラベル
次の表に、リソースタイプ l4_proxy_rule
のリソースラベルを示します。
フィールド | タイプ | 説明 |
---|---|---|
network_name | 文字列 | ロードバランサの VPC ネットワークの名前。 |
project_id | 文字列 | このリソースに関連付けられた Google Cloud プロジェクトの ID。 |
region | 文字列 | ロードバランサが定義されているリージョン。 |
target_proxy_name | 文字列 | 転送ルールで参照されるターゲット プロキシ オブジェクトの名前。 |
forwarding_rule_name | 文字列 | 転送ルール オブジェクトの名前。 |
loadbalancing_scheme_name | 文字列 | ロードバランサの転送ルールとバックエンド サービスの属性。ロードバランサが内部トラフィックと外部トラフィックのどちらで使用できるかを示します。 |
backend_target_name | 文字列 | リクエストの処理に選択したバックエンドの名前。 |
backend_target_type | 文字列 | バックエンド ターゲット (BACKEND_SERVICE / UNKNOWN) のタイプ。 |
backend_name | 文字列 | バックエンド インスタンス グループまたはネットワーク エンドポイント グループ(NEG)の名前。 |
backend_type | 文字列 | インスタンス グループ、NEG、不明のいずれかのバックエンドのタイプ。 Cloud Logging では、ロギングが無効になっている場合でも、backend_type が |
backend_scope | 文字列 | バックエンドの範囲。ゾーン名またはリージョン名です。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。 |
backend_scope_type | 文字列 | バックエンドの範囲(REGION/ZONE )。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。 |
モニタリング
プロキシ ネットワーク ロードバランサは、モニタリング データを Cloud Monitoring にエクスポートします。
モニタリング指標は次の目的で使用できます。
- ロードバランサの構成、使用状況、パフォーマンスを評価する。
- 問題のトラブルシューティングを行う。
- リソースの使用率とユーザー エクスペリエンスを改善する。
Monitoring の事前定義されたダッシュボードに加えて、カスタム ダッシュボードを作成して、アラートをセットアップし、Cloud Monitoring API を使用して指標に対するクエリを実行できます。
Monitoring ダッシュボードを表示する
Google Cloud コンソールで [Monitoring] ページに移動します。
ナビゲーション パネルに [リソース] が表示されている場合は [リソース] を選択し、[Google Cloud ロードバランサ] を選択します。それ以外の場合は、[ダッシュボード] を選択し、[Google Cloud ロードバランサ] という名前のダッシュボードを選択します。
ロードバランサの名前をクリックします。
左側のペインでは、このロードバランサのさまざまな詳細を確認できます。右側のペインでは時系列のグラフを表示できます。特定の内訳を確認するには、[Breakdowns] をクリックしてください。
指標報告の頻度と保持
ロードバランサの指標は、1 分単位のバッチで Monitoring にエクスポートされます。モニタリング データは 6 週間保持されます。指標はサンプリングされたトラフィックに基づいています(サンプリング レートは動的で、調整できません)。
ダッシュボードでは、1H(1 時間)、6H(6 時間)、1D(1 日)、1W(1 週間)、6W(6 週間)のデフォルト間隔でデータ分析の結果を確認できます。また、6 週間から 1 分までの間隔を任意に指定して手動で分析を行うこともできます。
従来のプロキシ ネットワーク ロードバランサの指標
従来のプロキシ ネットワーク ロードバランサの次の指標が Monitoring に報告されます。
指標 | 名前 | 説明 |
---|---|---|
インバウンド トラフィック | tcp_ssl_proxy/ingress_bytes_count |
外部エンドポイントから Google Front End(GFE)を経由して構成済みのバックエンドに送信されるバイト数(バイト/秒単位)。 |
アウトバウンド トラフィック | tcp_ssl_proxy/egress_bytes_count |
GFE を通じて構成済みバックエンドから外部エンドポイントに送信されるバイト数(バイト/秒単位)。 |
オープン接続 | tcp_ssl_proxy/open_connections |
所定のサンプル時点で開いている接続数。サンプルは 1 分間隔で取得されます。 |
1 秒あたりの新しい接続数 | tcp_ssl_proxy/new_connections |
作成された接続数(クライアントがバックエンドに正常に接続された場合)。カウントは 1 分単位で行われますが、グラフを調整して 1 秒あたりの値を表示できます。詳細については、Monitoring のドキュメントをご覧ください。 |
1 秒間ごとのクローズド接続 | tcp_ssl_proxy/closed_connections |
終了した接続数。カウントは 1 分単位で行われますが、グラフを調整して 1 秒あたりの値を表示できます。詳細については、Monitoring のドキュメントをご覧ください。 |
フロントエンド RTT | tcp_ssl_proxy/frontend_tcp_rtt |
クライアントと GFE 間の接続ごとに測定され、平滑化されたラウンドトリップ時間(RTT)の分布(GFE の TCP スタックによって、アプリケーション層のバイトが GFE からクライアントに渡されるたびに測定)。平滑化された RTT は、RTT 測定値で発生する可能性のある変動と異常を処理するアルゴリズムです。 |
他のロードバランサの指標
リージョン内部プロキシ ネットワーク ロードバランサ、リージョン外部プロキシ ネットワーク ロードバランサ、クロスリージョン内部プロキシ ネットワーク ロードバランサ、グローバル外部プロキシ ネットワーク ロードバランサの次の指標が Monitoring に報告されます。
指標 | 名前 | 説明 |
---|---|---|
インバウンド トラフィック | l4_proxy/ingress_bytes_count |
プロキシを使用してクライアントからバックエンド VM に送信されたバイト数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 210 秒間表示されません。 |
アウトバウンド トラフィック | l4_proxy/egress_bytes_count |
プロキシを使用してバックエンド VM からクライアントに送信されるバイト数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 210 秒間表示されません。 |
1 秒間ごとのクローズド接続 | l4_proxy/tcp/closed_connections_count |
TCP RST メッセージまたは TCP FIN メッセージを使用して終了された接続数。60 秒ごとにサンプリングされます。サンプリング後、データは最長 210 秒間表示されません。 |
指標のフィルタリング ディメンション
指標はロードバランサごとに集計されます。指標は、次の項目ごとにさらに詳細に分類できます。
プロパティ | 説明 |
---|---|
BACKEND SCOPE | 接続を処理したインスタンス グループの範囲(リージョンまたはゾーン)。 |
BACKEND ZONE | インスタンス グループがゾーン インスタンス グループの場合、接続を処理したインスタンス グループのゾーン。 |
BACKEND REGION | インスタンス グループがリージョン インスタンス グループの場合、接続を処理したインスタンス グループのリージョン。 |
PROXY CONTINENT | ユーザーの TCP / SSL 接続を終端した GFE の大陸(例: America 、Europe 、Asia )。 |
INSTANCE GROUP | ユーザー接続を受け取ったインスタンス グループの名前。 |
FORWARDING RULE | GFE への接続に使用された転送ルールの名前。 |
CLIENT COUNTRY | ユーザーの国の名前。 |
次のステップ
- SSL ポリシーの仕組みを確認する。SSL ポリシーの概要をご覧ください。
- 外部プロキシ ネットワーク ロードバランサの仕組みを確認する。外部プロキシ ネットワーク ロードバランサの概要をご覧ください。
- 内部プロキシ ネットワーク ロードバランサの仕組みを確認する。内部プロキシ ネットワーク ロードバランサの概要をご覧ください。