ロギング
外部アプリケーション ロードバランサのバックエンド サービスのログの有効化、無効化、表示を行えます。
バックエンド サービスごとにロギングを有効または無効にできます。すべてのリクエストをロギングするか、ランダムにサンプリングしたフラクションのみをロギングするかを構成できます。
外部アプリケーション ロードバランサに適用されるログの除外がないことを確認する必要があります。Cloud HTTP Load
Balancer
ログが許可されているかどうか確認する方法については、リソースタイプの除外の表示をご覧ください。
オプション フィールド
ログレコードには必須フィールドとオプション フィールドがあります。ログの内容に、オプション フィールドと必須フィールドの一覧を示します。すべての必須フィールドは常に含まれます。保持するオプション フィールドはカスタマイズできます。
[すべてのオプションのフィールドを含める] を選択すると、ログレコード形式のすべてのオプションのフィールドがログに含まれます。新しいオプション フィールドがレコード形式に追加されると、ログに新しいフィールドが自動的に含まれます。
[すべてのオプションのフィールドを除外する] を選択した場合、オプション フィールドはすべて省略されます。
[カスタム] を選択した場合は、含めるオプション フィールド(
tls.protocol,tls.cipher
など)を指定できます。
オプション フィールドのカスタマイズ手順については、新しいバックエンド サービスでロギングを有効にするをご覧ください。
新しいバックエンド サービスでのロギングの有効化
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
ロードバランサの名前をクリックします。
[
編集] をクリックします。[バックエンドの構成] をクリックします。
[バックエンド サービスを作成] を選択します。
必須のバックエンド サービス フィールドに入力します。
[ロギング] セクションで、[Logging を有効にする] チェックボックスをオンにします。
[サンプルレート] フィールドで、サンプリング確率を設定します。
0.0
から1.0
までの数値を設定できます。0.0
はリクエストがログに記録されていないことを意味し、1.0
はリクエストの 100% がログに記録されることを意味します。デフォルト値は1.0
です。省略可: ログにすべてのオプション フィールドをすべて含めるには、[任意項目] セクションで [すべてのオプションのフィールドを含める] をクリックします。
バックエンド サービスの編集を終了するには、[更新] をクリックします。
ロードバランサの編集を終了するには、[更新] をクリックします。
gcloud: リージョン モード
gcloud compute backend-services create
コマンドを使用してバックエンド サービスを作成し、ロギングを有効にします。
gcloud compute backend-services create BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
ここで
--region
は、バックエンド サービスがリージョンであることを示します。このフィールドは、リージョン外部アプリケーション ロードバランサで使用されるバックエンド サービスに使用します。--enable-logging
は、バックエンド サービスのロギングを有効にします。--logging-sample-rate
には、0.0
から1.0
までの値を指定できます。0.0
を設定すると、リクエストはまったくロギングされません。1.0
を設定すると、すべてのリクエストがロギングされます。--enable-logging
パラメータを指定した場合のみ有効となります。ロギングを有効にしても、サンプリング レートが0.0
であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は1.0
です。--logging-optional
を使用すると、ログに含めるオプション フィールドを指定できます。INCLUDE_ALL_OPTIONAL
: すべてのオプション フィールドを含めます。EXCLUDE_ALL_OPTIONAL
(デフォルト): すべてのオプション フィールドを除外します。CUSTOM
:OPTIONAL_FIELDS
で指定するオプション フィールドのカスタムリストを含めます。
--logging-optional-fields
を使用すると、ログに含めるオプション フィールドのカンマ区切りのリストを指定できます。たとえば、
tls.protocol,tls.cipher
は、LOGGING_OPTIONAL_MODE
がCUSTOM
に設定されている場合にのみ設定できます。
既存のバックエンド サービスでロギングを有効にする
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
ロードバランサの名前をクリックします。
[
編集] をクリックします。[バックエンドの構成] をクリックします。
バックエンド サービスの横にある [
編集] をクリックします。[ロギング] セクションで、[Logging を有効にする] チェックボックスをオンにします。
[サンプルレート] フィールドで、サンプリング確率を設定します。
0.0
から1.0
までの数値を設定できます。0.0
はリクエストがログに記録されていないことを意味し、1.0
はリクエストの 100% がログに記録されることを意味します。デフォルト値は1.0
です。省略可: ログにすべてのオプション フィールドをすべて含めるには、[任意項目] セクションで [すべてのオプションのフィールドを含める] をクリックします。
バックエンド サービスの編集を終了するには、[更新] をクリックします。
ロードバランサの編集を終了するには、[更新] をクリックします。
gcloud: リージョン モード
gcloud compute backend-services update
コマンドを使用して、既存のバックエンド サービスでロギングを有効にします。
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=VALUE \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
ここで
--region
は、バックエンド サービスがリージョンであることを示します。このフィールドは、リージョン外部アプリケーション ロードバランサで使用されるバックエンド サービスに使用します。--enable-logging
は、バックエンド サービスのロギングを有効にします。--logging-sample-rate
には、0.0
から1.0
までの値を指定できます。0.0
を設定すると、リクエストはまったくロギングされません。1.0
を設定すると、すべてのリクエストがロギングされます。--enable-logging
パラメータを指定した場合のみ有効となります。ロギングを有効にしても、サンプリング レートが0.0
であれば、ロギングが無効の場合と同じ結果になります。デフォルト値は1.0
です。--logging-optional
を使用すると、ログに含めるオプション フィールドを指定できます。INCLUDE_ALL_OPTIONAL
: すべてのオプション フィールドを含めます。EXCLUDE_ALL_OPTIONAL
(デフォルト): すべてのオプション フィールドを除外します。CUSTOM
:OPTIONAL_FIELDS
で指定するオプション フィールドのカスタムリストを含めます。
--logging-optional-fields
を使用すると、ログに含めるオプション フィールドのカンマ区切りのリストを指定できます。たとえば
tls.protocol,tls.cipher
です。LOGGING_OPTIONAL_MODE
がCUSTOM
に設定されている場合のみ設定できます。
既存のバックエンド サービスでのロギングの無効化または変更
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
ロードバランサの名前をクリックします。
[
編集] をクリックします。[バックエンドの構成] をクリックします。
バックエンド サービスの横にある [
編集] をクリックします。ロギングを完全に無効にするには、[ロギング] セクションで [Logging を有効にする] チェックボックスをオフにします。
ロギングを有効にした場合、[サンプルレート] フィールドに異なる値を設定できます。
0.0
から1.0
までの数値を設定できます。0.0
はリクエストがログに記録されていないことを意味し、1.0
はリクエストの 100% がログに記録されることを意味します。デフォルト値は1.0
です。保存されるログの数を 20% に減らすには、値を0.2
に設定します。バックエンド サービスの編集を終了するには、[更新] をクリックします。
ロードバランサの編集を終了するには、[更新] をクリックします。
gcloud: リージョン モード
gcloud compute backend-services update
コマンドを使用して、バックエンド サービスのロギングを無効にします。
ロギングの完全な無効化
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --no-enable-logging
ここで
--region
は、バックエンド サービスがリージョンであることを示します。このフィールドは、リージョン外部アプリケーション ロードバランサで使用されるバックエンド サービスに使用します。--no-enable-logging
はバックエンド サービスのロギングを無効にします。
ロギングのサンプルレートの変更
gcloud compute backend-services update BACKEND_SERVICE \ --global | --region=REGION \ --logging-sample-rate=VALUE
ログを表示する
HTTP(S) ログはまず転送ルールでインデックス化され、次に URL マップでインデックス化されます。
ログを表示するには、[ログ エクスプローラ] ページに移動します。
[ログ エクスプローラ] に移動
すべてのログを表示するには、[リソース] フィルタ メニューで [Cloud HTTP ロードバランサ] > [すべての転送ルール] を選択します。
1 つの転送ルールのログを表示するには、単一の転送ルール名を選択します。
1 つの URL マップのログを表示するには、転送ルールを選択してから、URL マップを選択します。
通常、ブール型のログフィールドは、フィールドの値が true
の場合にのみ表示されます。ブール フィールドの値が false
の場合、そのフィールドはログから省略されます。
ログフィールドには UTF-8 エンコードが適用されます。UTF-8 以外の文字列は、疑問符に置き換えられます。リージョン外部アプリケーション ロードバランサの場合は、リソースログ(resource.type="http_external_regional_lb_rule"
)を使用してログベースの指標をエクスポートできます。
ログの内容
外部アプリケーション ロードバランサのログエントリには、HTTP(S) トラフィックのモニタリングとデバッグに有用な情報が含まれています。ログレコードには、すべてのログレコードのデフォルト フィールドである必須フィールドが含まれています。ログレコードには、HTTP(S) トラフィックに関する追加情報を追加するオプション フィールドが含まれています。オプション フィールドは、ストレージ コストを節約するために省略できます。
一部のログフィールドはマルチ フィールド形式であり、所定のフィールドに複数のデータが含まれます。たとえば、tls
フィールドは TlsDetails
形式で、TLS プロトコルと TLS 暗号が 1 つのフィールドに含まれています。これらのマルチ フィールドのフィールドについては、次のレコード形式の表で説明します。
フィールド | フィールドの形式 | フィールドのタイプ: 必須または省略可 | 説明 |
---|---|---|---|
severity insertID timestamp logName |
LogEntry | 必須 | ログエントリで説明されている一般的なフィールド。 |
httpRequest | HttpRequest | 必須 | HTTP リクエストをロギングするための共通プロトコル。 |
resource | MonitoredResource | 必須 | MonitoredResource は、ログエントリに関連付けられているリソースタイプです。 MonitoredResourceDescriptor は、型名とラベルのセットを使用して |
jsonPayload | オブジェクト(Struct 形式) | 必須 | JSON オブジェクトとして表されるログエントリ ペイロード。JSON オブジェクトには、次のフィールドが含まれています。
|
文字列 | 必須 |
値が空の文字列の場合、このフィールドはログに記録されません。これは、プロキシまたはバックエンドがエラーを返さない場合、または
|
|
TlsDetails | 省略可 | tls フィールドには、クライアントとリージョン外部アプリケーション ロードバランサ間の接続の TLS メタデータを指定する TlsDetails が保持されます。このフィールドは、クライアントが TLS / SSL 暗号化を使用している場合にのみ使用できます。 |
|
MtlsDetails | 省略可 | mtls フィールドには、クライアントとリージョン外部アプリケーション ロードバランサ間の接続の mTLS メタデータを指定する MtlsDetails 値が保持されます。このフィールドは、ロードバランサがフロントエンド相互 TLS(mTLS)を使用している場合にのみ使用できます。 |
TlsDetails フィールドの形式
フィールド | フィールドの形式 | フィールドのタイプ: 必須または省略可 | 説明 |
---|---|---|---|
protocol | 文字列 | 省略可 | クライアントがロードバランサとの接続を確立するために使用する TLS プロトコル。有効な値は、TLS 1.0, 1.1, 1.2,
1.3 または QUIC です。クライアントが TLS / SSL 暗号化を使用していない場合、この値は NULL に設定されます。 |
cipher | 文字列 | 省略可 | クライアントがロードバランサとの接続を確立するために使用する TLS 暗号。クライアントが HTTP(S) を使用していない場合、またはクライアントが TLS / SSL 暗号化を使用していない場合、この値は NULL に設定されます。 |
MtlsDetails フィールドの形式
フィールド | フィールドの形式 | フィールドのタイプ: 必須または省略可 | 説明 |
---|---|---|---|
clientCertPresent | ブール値 | 省略可 | TLS handshake 中にクライアントが証明書を提供した場合は |
clientCertChainVerified | ブール値 | 省略可 | 構成された |
clientCertError | 文字列 | 省略可 | エラー条件を表す事前定義の文字列。エラー文字列の詳細については、mTLS クライアント検証モードをご覧ください。 |
clientCertSha256Fingerprint | 文字列 | 省略可 | クライアント証明書の Base64 でエンコードされた SHA-256 フィンガープリント。 |
clientCertSerialNumber | 文字列 | 省略可 | クライアント証明書のシリアル番号。シリアル番号が 50 バイトを超える場合、文字列 |
clientCertValidStartTime | 文字列 | 省略可 | クライアント証明書が無効になる前のタイムスタンプ(RFC 3339 日付文字列形式)。例: |
clientCertValidEndTime | 文字列 | 省略可 | クライアント証明書が有効でなくなった後のタイムスタンプ(RFC 3339 日付文字列形式)。例: |
clientCertSpiffeId | 文字列 | 省略可 | サブジェクト代替名(SAN)フィールドの SPIFFE ID。値が無効であるか、2,048 バイトを超える場合、SPIFFE ID は空の文字列に設定されます。 SPIFFE ID が 2,048 バイトを超える場合、文字列 |
clientCertUriSans | 文字列 | 省略可 | URI 型の SAN 拡張機能のカンマ区切り Base64 エンコード リスト。SAN 拡張機能はクライアント証明書から抽出されます。
|
clientCertDnsnameSans | 文字列 | 省略可 | DNSName タイプの SAN 拡張機能のカンマ区切り Base64 エンコード リスト。SAN 拡張機能はクライアント証明書から抽出されます。
|
clientCertIssuerDn | 文字列 | 省略可 | Base64 でエンコードされた証明書の完全な発行者フィールド。
|
clientCertSubjectDn | 文字列 | 省略可 | Base64 でエンコードされた証明書の完全なサブジェクト フィールド。
|
clientCertLeaf | 文字列 | 省略可 | 証明書が検証に合格している確立済みの mTLS 接続のクライアント リーフ証明書。証明書のエンコードは RFC 9440 に準拠しています。バイナリ DER 証明書は Base64 を使用してエンコードされ、両側がコロンで区切られています(改行、スペース、Base64 以外の文字は使用されません)。
|
clientCertChain | 文字列 | 省略可 | クライアント証明書が検証に合格している確立済みの mTLS 接続のクライアント証明書チェーンの証明書のリスト。このリストはカンマ区切りで、標準の TLS 順序になっています(リーフ証明書は含みません)。証明書のエンコードは RFC 9440 に準拠しています。 Base64 エンコード前の |
リソースラベル
次の表に、resource.type="http_external_regional_lb_rule"
のリソースラベルを示します。
フィールド | 型 | 説明 |
---|---|---|
backend_name |
文字列 | バックエンド インスタンス グループまたは NEG の名前。ただし、TLS 接続の失敗の場合、ラベルは空白です。 |
backend_scope |
文字列 |
バックエンドの範囲。ゾーン名またはリージョン名です。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。 |
backend_scope_type |
文字列 | バックエンドの範囲(REGION /ZONE )。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。 |
backend_target_name |
文字列 | リクエストを処理するために選択されたバックエンドの名前。リクエストと一致する URL マップのパスルールまたはルートルールに基づいて選択されます。 |
backend_target_type |
文字列 |
バックエンド ターゲットのタイプ。BACKEND_SERVICE か、バックエンドが割り当てられていない場合は UNKNOWN が返されます。 |
backend_type |
文字列 |
バックエンド グループのタイプ。INSTANCE_GROUP と NETWORK_ENDPOINT_GROUP のいずれかで、バックエンドが割り当てられていない場合は UNKNOWN が返されます。 |
forwarding_rule_name |
文字列 | 転送ルール オブジェクトの名前。 |
matched_url_path_rule |
文字列 |
URL マップキーの一部として構成された URL マップ パスルールまたはルートルール。フォールバックとして UNMATCHED または UNKNOWN の場合もあります。
|
network_name |
文字列 | ロードバランサの VPC ネットワークの名前。 |
project_id |
文字列 | このリソースに関連付けられた Google Cloud プロジェクトの ID。 |
region |
文字列 | ロードバランサが定義されているリージョン。 |
target_proxy_name |
文字列 | 転送ルールで参照されるターゲット プロキシ オブジェクトの名前。 |
url_map_name |
文字列 | バックエンド サービスを選択するように構成された URL マップ オブジェクトの名前。 TLS 接続の失敗の場合は空白です。 |
proxyStatus エラー フィールド
proxyStatus
フィールドには、ロードバランサがエラーを返した理由を指定する文字列が含まれます。proxyStatus
フィールドには、proxyStatus error
と proxyStatus details
という 2 つの部分があります。このセクションでは、proxyStatus error
フィールドでサポートされている文字列について説明します。
proxyStatus error フィールドは、次のロードバランサに適用されます。
- リージョン外部アプリケーション ロードバランサ
- クロスリージョン内部アプリケーション ロードバランサ
- リージョン内部アプリケーション ロードバランサ
proxyStatus エラー | 説明 | 一般的に記録されるレスポンス コード |
---|---|---|
destination_unavailable
|
ロードバランサが、バックエンドが使用不可であると見なしています。たとえば、バックエンドとの通信が最近失敗したか、ヘルスチェックが失敗した場合などです。 | 500、503 |
connection_timeout
|
ロードバランサがバックエンドへの接続を開始しようとしてタイムアウトしました。 | 504 |
connection_terminated
|
完全なレスポンスを受信する前に、ロードバランサからバックエンドへの接続が終了しました。 この
|
0、502、503 |
connection_refused
|
ロードバランサからバックエンドへの接続が拒否されました。 | 502、503 |
connection_limit_reached
|
ロードバランサはバックエンドに対する接続数を制限するように構成されており、この上限を超えています。 この
|
502、503 |
destination_not_found
|
ロードバランサは、このリクエストに使用する適切なバックエンドを決定できません。たとえば、バックエンドが構成されていない可能性があります。 | 500、404 |
dns_error
|
バックエンド ホスト名の IP アドレスを検出しようとしたときに、ロードバランサで DNS エラーが発生しました。 | 502、503 |
proxy_configuration_error
|
ロードバランサで内部構成エラーが発生しました。 | 500 |
proxy_internal_error
|
ロードバランサで内部エラーが発生しました。 | 0、500、502 |
proxy_internal_response
|
ロードバランサがバックエンドへの接続を試行せずにレスポンスを生成しました。 | 問題の種類に応じた任意のレスポンス コード。たとえば、410 レスポンス コードは、支払いの滞納が原因でバックエンドを使用できないことを意味します。 |
http_response_timeout
|
ロードバランサは、バックエンドからの完全なレスポンスの待機中に、構成されたバックエンド サービスのタイムアウトの上限に達しました。 | 504、408 |
http_request_error
|
ロードバランサで HTTP 4xx エラーが発生し、クライアント リクエストに問題があることを示します。 | 400、403、405、406、408、411、413、414、415、416、417、または 429 |
http_protocol_error
|
ロードバランサが、バックエンドとの通信中に HTTP プロトコル エラーを検出しました。 | 502 |
tls_protocol_error
|
ロードバランサが TLS handshake 中に TLS エラーを検出しました。 | 0 |
tls_certificate_error
|
mTLS が有効で、サーバーまたはクライアントから提示された証明書を検証するとき、ロードバランサでエラーが発生しました。 | 0 |
tls_alert_received
|
ロードバランサが TLS handshake 中に致命的な TLS アラートを検出しました。 | 0 |
proxyStatus 詳細フィールド
proxyStatus
フィールドには、ロードバランサがエラーを返した理由を指定する文字列が含まれます。proxyStatus
フィールドには、proxyStatus error
と proxyStatus details
という 2 つの部分があります。proxyStatus details
フィールドは省略可能で、追加情報が利用可能な場合にのみ表示されます。このセクションでは、proxyStatus details
フィールドでサポートされている文字列について説明します。
proxyStatus details フィールドは、次のロードバランサに適用されます。
- リージョン外部アプリケーション ロードバランサ
- リージョン内部アプリケーション ロードバランサ
- クロスリージョン内部アプリケーション ロードバランサ
proxyStatus の詳細 | 説明 | 一般的に記録されるレスポンス コード |
---|---|---|
client_disconnected_before_any_response
|
ロードバランサがレスポンスを送信する前に、クライアントへの接続が切断されました。 | 0 |
backend_connection_closed
|
バックエンドが予期せずロードバランサへの接続を閉じました。これは、ロードバランサがサードパーティ アプリケーションなど別のエンティティにトラフィックを送信していて、そのエンティティの TCP タイムアウト値がロードバランサのタイムアウト値である 10 分(600 秒)よりも短い場合に発生する可能性があります。 | 502 |
failed_to_connect_to_backend
|
ロードバランサは、バックエンドに接続できませんでした。これには、接続フェーズ中のタイムアウトが含まれます。 | 503 |
failed_to_pick_backend
|
ロードバランサは、リクエストを処理するための正常なバックエンドを選択できませんでした。 | 502 |
response_sent_by_backend
|
HTTP リクエストは、バックエンドに正常にプロキシされ、バックエンドによってレスポンスが返されました。 | HTTP レスポンス コードは、バックエンドで実行されているソフトウェアによって設定されます。 |
client_timed_out
|
ロードバランサとクライアントとの接続が、アイドル タイムアウトを超過しました。 リージョン外部アプリケーション ロードバランサの詳細については、クライアントの HTTP キープアライブ タイムアウトをご覧ください。内部アプリケーション ロードバランサの詳細については、クライアント HTTP キープアライブ タイムアウトをご覧ください。 |
0、408 |
backend_timeout
|
バックエンドは、レスポンスを生成中にタイムアウトしました。 |
502 |
http_protocol_error_from_backend_response
|
バックエンド レスポンスに HTTP プロトコル エラーが含まれています。 | 501、502 |
http_protocol_error_from_request
|
クライアント リクエストに HTTP プロトコル エラーが含まれています。 | 400、503 |
http_version_not_supported
|
HTTP プロトコル バージョンがサポートされていません。現在サポートされているのは、HTTP 0.9、1.0、1.1、2.0 のみです。 | 400 |
handled_by_identity_aware_proxy
|
このレスポンスは、アクセスを許可する前のクライアントの ID 確認時に、Identity-Aware Proxy(IAP)によって生成されました。 | 200、302、400、401、403、500、502 |
invalid_request_headers
|
クライアントから受信した HTTP リクエスト ヘッダーに、該当する HTTP 仕様で許可されていない文字が 1 つ以上含まれています。 たとえば、二重引用符( 詳しくは以下をご覧ください。 |
400、404 |
ip_detection_failed
|
元の IP アドレスを検出できませんでした。 | 任意のレスポンス コード。失敗の性質によって異なります。値は 400~599 にする必要があります。 |
request_body_too_large
|
HTTP リクエストの本文がロードバランサでサポートされている最大長を超えています。 | 413、507 |
request_header_timeout
|
ロードバランサが 5 秒以内に完全なリクエストを受信しなかったため、リクエスト ヘッダーがタイムアウトしました。 | 408、504 |
denied_by_security_policy
|
Google Cloud Armor のセキュリティ ポリシーが原因で、ロードバランサがリクエストを拒否しました。 | 403 |
throttled_by_security_policy
|
リクエストは Google Cloud Armor のスロットル ルールによってブロックされました。 | 429 |
client_cert_chain_invalid_eku
|
クライアント証明書またはその発行元のいずれかに、clientAuth を含む鍵の拡張的用途がありません。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
client_cert_chain_max_name_constraints_exceeded
|
検証に指定された中間証明書に、10 を超える名前の制約があります。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
client_cert_invalid_rsa_key_size
|
クライアントのリーフ証明書または中間証明書の RSA 鍵のサイズが無効です。 詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
client_cert_not_provided
|
クライアントが handshake 中にリクエストされた証明書を提示しませんでした。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
client_cert_pki_too_large
|
検証に使用する PKI に、同じ Subject と Subject Public Key Info を共有する 4 つ以上の中間証明書があります。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 |
0 |
client_cert_unsupported_elliptic_curve_key
|
クライアント証明書または中間証明書で、サポートされていない楕円曲線が使用されています。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
client_cert_unsupported_key_algorithm
|
クライアント証明書または中間証明書が、非 RSA または ECDSA 以外のアルゴリズムを使用しています。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
client_cert_validation_failed
|
クライアント証明書が TrustConfig での検証に失敗しました。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 |
0 |
client_cert_validation_not_performed
|
TrustConfig を設定せずに相互 TLS が構成されています。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 |
0 |
client_cert_validation_search_limit_exceeded
|
証明書チェーンの検証中に、深度または反復処理の上限に達しました。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
client_cert_validation_timed_out
|
証明書チェーンの検証中に時間制限(200 ミリ秒)を超えました。詳細については、閉じられた接続についてログに記録されたエラーをご覧ください。 | 0 |
tls_version_not_supported
|
TLS プロトコル バージョンは認識されますが、サポートされていません。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
unknown_psk_identity
|
PSK 鍵の確立が必要であるにもかかわらず、許容される PSK ID をクライアントが提供しなかった場合に、サーバーがこのエラーを送信します。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
no_application_protocol
|
クライアントの「application_layer_protocol_negotiation」拡張機能が、サーバーでサポートされていないプロトコルのみをアドバタイズする場合に、サーバーによって送信されます。TLS アプリケーション レイヤ プロトコル ネゴシエーション拡張をご覧ください。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
no_certificate
|
証明書が見つかりません。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
bad_certificate
|
証明書が無効であるか、検証できない署名が含まれています。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
unsupported_certificate
|
証明書の形式がサポートされていません。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
certificate_revoked
|
証明書が署名者によって取り消されました。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
certificate_expired
|
証明書の有効期限が切れているか、無効です。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
certificate_unknown
|
証明書の処理中に、原因不明の問題が発生したため、証明書は受け入れられません。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
unknown_ca
|
有効な証明書チェーンまたは部分チェーンが受信されましたが、CA 証明書が見つからなかったか、既知のトラスト アンカーと一致しなかったため、証明書は受け入れられませんでした。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
unexpected_message
|
不適切なメッセージ(誤った handshake メッセージ、早期のアプリケーション データなど)が受信された。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
bad_record_mac
|
保護を解除できないレコードが受信されました。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
record_overflow
|
長さが 214+256 バイトを超える TLSCiphertext レコードが受信されたか、214 バイト(または他のネゴシエートされた上限)を超える TLSPlaintext レコードにレコードが復号されました。このエラーが起きると、TLS 接続が閉じられます。 |
0 |
handshake_failure
|
利用可能なオプションで、許容可能なセキュリティ パラメータのセットをネゴシエートできません。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
illegal_parameter
|
handshake のフィールドが正しくないか、他のフィールドとの整合性がありません。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
access_denied
|
有効な証明書または PSK が受信されましたが、アクセス制御が適用されたときに、クライアントがネゴシエーションに進みませんでした。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
decode_error
|
一部のフィールドが指定された範囲外であったか、メッセージの長さが正しくなかったため、メッセージをデコードできませんでした。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
decrypt_error
|
handshake(レコードレイヤではない)の暗号オペレーションが失敗しました。これには、署名を正しく確認できないこと、終了メッセージまたは PSK バインダを検証できないことが含まれます。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
insufficient_security
|
サーバーが、クライアントでサポートされているパラメータよりも安全なパラメータを必要とするため、ネゴシエーションが失敗しました。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
inappropriate_fallback
|
クライアントからの無効な接続の再試行に対する応答として、サーバーから送信されます。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
user_cancelled
|
プロトコル障害とは無関係の理由で、ユーザーが handshake をキャンセルしました。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
missing_extension
|
提示された TLS バージョンまたは他のネゴシエートされたパラメータに対して送信が必須である拡張機能を含まない handshake メッセージを受信するエンドポイントによって送信されます。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
unsupported_extension
|
特定の handshake メッセージに含めることが禁止されている拡張機能を含む handshake メッセージか、対応する ClientHello または CertificateRequest で最初に提示されなかった ServerHello または Certificate の拡張機能を含む handshake メッセージを受信したエンドポイントによって送信されます。このエラーが起きると、TLS 接続が閉じられます。 |
0 |
unrecognized_name
|
「server_name」拡張機能を通じてクライアントから提供された名前で識別できるサーバーが存在しない場合に、サーバーによって送信されます。TLS 拡張機能の定義をご覧ください。 | 0 |
bad_certificate_status_response
|
サーバーから「status_request」拡張機能を通じて無効または許容できない OCSP レスポンスが提供された場合に、クライアントによって送信されます。TLS 拡張機能の定義をご覧ください。このエラーが起きると、TLS 接続が閉じられます。 | 0 |
load_balancer_configured_resource_limits_reached
|
ロードバランサが、構成されたリソースの上限(最大接続数など)に達しました。 | 400、500、503 |
失敗した TLS 接続のログエントリ
バックエンドが選択される前にクライアントとロードバランサ間の TLS 接続が失敗すると、ログエントリにエラーが記録されます。バックエンド サービスは、さまざまなログ サンプルレートで構成できます。TLS 接続が失敗した場合、失敗した TLS 接続のログ サンプルレートは、バックエンド サービスの最大のサンプルレートとなります。たとえば、2 つのバックエンド サービスを構成し、ロギング サンプル レートを 0.3
と 0.5
に設定した場合、失敗した TLS 接続のログ サンプルレートは 0.5
となります。
失敗した TLS 接続は、次のログエントリの詳細を確認することで特定できます。
- proxyStatus エラータイプは
tls_alert_received
、tls_certificate_error
、tls_protocol_error
、またはconnection_terminated
です。 - バックエンド情報はありません。
次のサンプルは、proxyStatus error
フィールドを含む失敗した TLS ログエントリを示しています。
json_payload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" proxyStatus: "error="tls_alert_received"; details="server_to_client: handshake_failure"" log_name: "projects/529254013417/logs/mockservice.googleapis.com%20name" } http_request { latency { nanos: 12412000 } protocol: "HTTP/1.0" remote_ip: "127.0.0.2" } resource { type: "mock_internal_http_lb_rule" labels { backend_name: "" backend_scope: "" backend_scope_type: "UNKNOWN" backend_target_name: "" backend_target_type: "UNKNOWN" backend_type: "UNKNOWN" forwarding_rule_name: "l7-ilb-https-forwarding-rule-dev" matched_url_path_rule: "UNKNOWN" network_name: "lb-network" region: "REGION" target_proxy_name: "l7-ilb-https-proxy-dev" url_map_name: "" } } timestamp: "2023-08-15T16:49:30.850785Z"
認可ポリシー リクエスト ログ
Load Balancer ログエントリ JSON ペイロードの authz_info
オブジェクトには、認可ポリシーに関する情報が含まれています。これらのポリシーによって許可または拒否されたトラフィックのログベースの指標を構成できます。
フィールド | 型 | 説明 |
---|---|---|
authz_info.policies[] |
オブジェクト | リクエストに一致するポリシーのリスト。 |
authz_info.policies[].name |
文字列 | リクエストに一致する認可ポリシーの名前。 名前が空である理由は次のとおりです。
|
authz_info.policies[].result |
列挙型 | 結果は ALLOWED または DENIED のいずれかになります。 |
authz_info.policies[].details |
文字列 | 詳細には次のものが含まれます。
|
authz_info.overall_result |
列挙型 | 結果は ALLOWED または DENIED のいずれかになります。 |
ログの操作
Cloud Logging API を使用して、外部アプリケーション ロードバランサのログを操作できます。Logging API では、特定のフィールドが設定されたログをインタラクティブにフィルタリングできます。一致するログを Cloud Logging、Cloud Storage、BigQuery、Pub/Sub にエクスポートします。Logging API について詳しくは、Cloud Logging API の概要をご覧ください。
モニタリング
ロードバランサは、モニタリング データを Cloud Monitoring にエクスポートします。
モニタリング指標を使用すると、次のことができます。
- ロードバランサの構成、使用状況、パフォーマンスを評価する
- 問題のトラブルシューティングを行う
- リソースの使用率とユーザー エクスペリエンスを改善する
Cloud Monitoring の事前定義されたダッシュボードに加えて、カスタム ダッシュボードの作成、アラートのセットアップ、Cloud Monitoring API を使った指標の照会を行うことができます。
アラート ポリシーの定義
アラート ポリシーを作成して指標の値をモニタリングすると、指標が条件に違反した場合に通知できます。
-
Google Cloud コンソールで、[notificationsアラート] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。
- 通知チャンネルを作成せずに通知を受け取る場合は、[EDIT NOTIFICATION CHANNELS] をクリックして、通知チャンネルを追加します。チャンネルを追加したら、[アラート] ページに戻ります。
- [アラート] ページで、[CREATE POLICY] をクリックします。
- 指標を選択するには、[指標を選択] メニューを開き、次の操作を行います。
- メニューを関連するエントリに限定するには、フィルタバーに「
Regional External Application Load Balancer Rule
」と入力します。結果が表示されない場合は、[アクティブなリソースと指標のみを表示] をオフに切り替えます。 - リソースの種類で、[リージョン外部アプリケーション ロードバランサのルール] を選択します。
- 指標カテゴリと指標を選択して、[適用] を選択します。
- メニューを関連するエントリに限定するには、フィルタバーに「
- [次へ] をクリックします。
- [Configure alert trigger] ページの設定によって、アラートがトリガーされるタイミングが決まります。条件タイプを選択し、必要に応じてしきい値を指定します。詳細については、指標しきい値のアラート ポリシーを作成するをご覧ください。
- [次へ] をクリックします。
- (省略可)アラート ポリシーに通知を追加するには、[通知チャネル] をクリックします。ダイアログで、メニューから 1 つ以上の通知チャンネルを選択し、[OK] をクリックします。
- (省略可)インシデントの自動クローズ期間を更新します。このフィールドは、指標データがない場合に Monitoring がインシデントを閉じるタイミングを決定します。
- (省略可)[Documentation] をクリックして、通知メッセージに追加する情報を入力します。
- [アラート名] をクリックして、アラート ポリシーの名前を入力します。
- [ポリシーを作成] をクリックします。
Cloud Monitoring のカスタム ダッシュボードの定義
ロードバランサの指標用にカスタム Cloud Monitoring ダッシュボードを作成できます。
Google Cloud コンソールで [Monitoring] ページに移動します。
[ダッシュボード] > [CREATE DASHBOARD] を選択します。
[グラフを追加] をクリックして、グラフのタイトルを指定します。
表示する時系列を指定するため、リソースタイプと指標タイプを選択します。
- [Resource & Metric] セクションでグラフをクリックし、[指標を選択] セクションで使用可能なオプションを選択します。
- リージョン外部アプリケーション ロードバランサの場合は、リソースタイプで [リージョン外部アプリケーション ロードバランサのルール] を選択します。
- [適用] をクリックします。
モニタリング フィルタを指定するには、[フィルタ] > [フィルタを追加] をクリックします。
[保存] をクリックします。
指標報告の頻度と保持
外部アプリケーション ロードバランサの指標は、1 分単位のバッチで Cloud Monitoring にエクスポートされます。モニタリング データは 6 週間保持されます。
ダッシュボードでは、1H(1 時間)、6H(6 時間)、1D(1 日)、1W(1 週間)、6W(6 週間)のデフォルト間隔でデータ分析の結果を確認できます。また、6 週間から 1 分までの間隔を任意に指定して手動で分析を行うこともできます。
モニタリング指標
外部アプリケーション ロードバランサの次の指標をモニタリングできます。
リージョン外部アプリケーション ロードバランサの次の指標が、Cloud Monitoring に報告されます。指標の先頭には loadbalancing.googleapis.com/
が付加されます。
指標 | 名前 | 説明 |
---|---|---|
リクエスト数 | https/external/regional/request_count |
リージョン外部アプリケーション ロードバランサによって処理されるリクエストの数。 |
リクエスト バイト数 | https/external/regional/request_bytes |
クライアントからリージョン外部アプリケーション ロードバランサへのリクエストとして送信されたバイト数。 |
レスポンス バイト数 | https/external/regional/response_bytes |
リージョン外部アプリケーション ロードバランサからクライアントへのレスポンスとして送信されたバイト数。 |
総レイテンシ | https/external/regional/total_latencies |
レイテンシの分布(ミリ秒単位)。リクエストの最初のバイトがプロキシで受信された時点からレスポンスの最後のバイトがプロキシから送信された時点までのレイテンシ。 |
バックエンド レイテンシ | https/external/regional/backend_latencies |
レイテンシの分布(ミリ秒単位)。プロキシからバックエンドにリクエストの最初のバイトが送信された時点から、バックエンドからのレスポンスの最後のバイトがプロキシで受信された時点までのレイテンシ。 |
指標のディメンションのフィルタリング
外部アプリケーション ロードバランサの指標にフィルタを適用できます。
指標は、リージョン外部アプリケーション ロードバランサごとに集計されます。集計された指標は、resource.type="http_external_regional_lb_rule"
の次のディメンションでフィルタリングできます。
プロパティ | 説明 |
---|---|
backend_name |
バックエンド インスタンス グループまたは NEG の名前。 |
backend_scope |
バックエンドの範囲。ゾーン名またはリージョン名です。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。 |
backend_scope_type |
バックエンドの範囲(REGION /ZONE )。backend_name が不明な場合はいつでも、UNKNOWN である可能性があります。 |
backend_target_name |
リクエストを処理するために選択されたバックエンドの名前。リクエストと一致する URL マップのパスルールまたはルートルールに基づいて選択されます。 |
backend_target_type |
バックエンド ターゲットのタイプ。BACKEND_SERVICE か、バックエンドが割り当てられていない場合は UNKNOWN が返されます。 |
backend_type |
バックエンド グループのタイプ。INSTANCE_GROUP と NETWORK_ENDPOINT_GROUP のいずれかで、バックエンドが割り当てられていない場合は UNKNOWN が返されます。 |
forwarding_rule_name |
転送ルール オブジェクトの名前。 |
matched_url_path_rule |
URL マップキーの一部として構成された URL マップ パスルールまたはルートルール。フォールバックとして UNMATCHED または UNKNOWN の場合もあります。
|
network_name |
ロードバランサの VPC ネットワークの名前。 |
project_id |
このリソースに関連付けられた Google Cloud プロジェクトの ID。 |
region |
ロードバランサが定義されているリージョン。 |
target_proxy_name |
転送ルールで参照されるターゲット プロキシ オブジェクトの名前。 |
url_map_name |
バックエンド サービスを選択するように構成された URL マップ オブジェクトの名前。 |
次のステップ
- 外部アプリケーション ロードバランサのコンセプトについて理解する。