記錄
您可以啟用、停用及查看外部應用程式負載平衡器後端服務的記錄功能。對於含有後端 bucket的外部應用程式負載平衡器,系統會自動啟用記錄功能,且無法停用。
您可以為每個後端服務啟用或停用記錄功能。您可以設定是否要記錄所有要求,或是隨機取樣記錄一小部分。
請務必確認您沒有套用至外部應用程式負載平衡器的記錄排除項目。如要瞭解如何驗證是否允許 Cloud HTTP Load
Balancer
記錄,請參閱排除篩選器。
記錄取樣和收集
系統會對負載平衡器後端虛擬機器 (VM) 執行個體處理的要求 (和相應回應) 進行取樣。系統會處理這些取樣的要求,產生記錄。您可以根據 logConfig.sampleRate
參數控管要以記錄項目形式傳送的請求比例。如果 logConfig.sampleRate
為 1.0
(100%),表示系統會為所有要求產生記錄,並將記錄寫入 Cloud Logging。
選填欄位
記錄包含必填欄位和選填欄位。「What is logged」一節列出哪些欄位為選填欄位,哪些欄位為必填欄位。系統一律會納入所有必填欄位。您可以自訂要保留哪些選用欄位。
如果選取「包含所有選用欄位」,則記錄記錄格式中的所有選用欄位都會納入記錄。將新的選用欄位新增至記錄格式時,記錄會自動納入新欄位。
如果選取「排除所有選填欄位」,系統就會略過所有選填欄位。
如果選取「自訂」,您可以指定要納入的選用欄位,例如
tls.protocol,tls.cipher,orca_load_report.cpu_utilization,orca_load_report.mem_utilization
。
如要瞭解如何自訂選填欄位,請參閱「啟用新後端服務的記錄功能」。
啟用新後端服務的記錄功能
主控台
前往 Google Cloud 控制台的「Load Balancing」(負載平衡) 頁面。
點選負載平衡器的名稱。
按一下「編輯」圖示
。按一下「後端設定」。
選取「Create a backend service」。
填寫後端服務的必填欄位。
在「Logging」專區中,勾選「Enable logging」核取方塊。
設定「Sample rate」(取樣率) 分數。您可以設定從
0.0
到1.0
的數字,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。預設值為1.0
。選用:如要將所有選用欄位納入記錄,請在「選用欄位」部分中按一下「包含所有選用欄位」。
點選「更新」,完成編輯後端服務。
按一下「更新」,完成負載平衡器的編輯作業。
gcloud:全域模式
使用 gcloud compute backend-services create
指令建立後端服務並啟用記錄功能。
gcloud compute backend-services create BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
gcloud compute backend-services create
指令支援下列欄位:
--global
表示後端服務是全域服務。請將這個欄位用於與全域外部應用程式負載平衡器搭配使用的後端服務。--enable-logging
可為該後端服務啟用記錄功能。--logging-sample-rate
可讓您指定介於0.0
到1.0
之間的值,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。這個欄位僅適用於--enable-logging
參數。啟用記錄功能但將取樣率設為0.0
,等同於停用記錄功能。預設值為1.0
。--logging-optional
可讓您指定要納入記錄中的選用欄位:INCLUDE_ALL_OPTIONAL
來納入所有選填欄位。EXCLUDE_ALL_OPTIONAL
(預設) 可排除所有選填欄位。CUSTOM
包含您在OPTIONAL_FIELDS
中指定的選填欄位自訂清單。
--logging-optional-fields
可讓您指定要納入記錄的選用欄位清單,並以半形逗號分隔。舉例來說,只有在
LOGGING_OPTIONAL_MODE
設為CUSTOM
時,才能設定tls.protocol,tls.cipher
。如果您使用自訂指標,且想記錄 ORCA 負載報表的元素,請將LOGGING_OPTIONAL_MODE
設為CUSTOM
,並指定OPTIONAL_FIELDS
欄位中必須記錄的元素。例如:orca_load_report.cpu_utilization,orca_load_report.mem_utilization
。
啟用現有後端服務的記錄功能
主控台
前往 Google Cloud 控制台的「Load Balancing」(負載平衡) 頁面。
點選負載平衡器的名稱。
按一下「編輯」圖示
。按一下「後端設定」。
按一下後端服務旁的
「Edit」(編輯)。在「Logging」專區中,勾選「Enable logging」核取方塊。
在「Sample rate」(取樣率) 欄位中,設定取樣機率。您可以設定從
0.0
到1.0
的數字,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。預設值為1.0
。點選「更新」,完成編輯後端服務。
按一下「更新」,完成負載平衡器的編輯作業。
gcloud:全域模式
使用 gcloud compute backend-services update
指令啟用現有後端服務的記錄功能。
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE
其中
--global
表示後端服務是全域服務。請將這個欄位用於與全域外部應用程式負載平衡器搭配使用的後端服務。--enable-logging
可為該後端服務啟用記錄功能。--logging-sample-rate
可讓您指定介於0.0
到1.0
之間的值,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。這個值僅在使用--enable-logging
參數時有作用。啟用記錄功能但將取樣率設為0.0
,等同於停用記錄功能。預設值為1.0
。
gcloud:傳統模式
使用 gcloud compute backend-services update
指令啟用現有後端服務的記錄功能。
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE
其中
--global
表示後端服務是全域服務。請將這個欄位用於與傳統版應用程式負載平衡器搭配使用的後端服務。--enable-logging
可為該後端服務啟用記錄功能。--logging-sample-rate
可讓您指定介於0.0
到1.0
之間的值,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。這個值僅在使用--enable-logging
參數時有作用。啟用記錄功能但將取樣率設為0.0
,等同於停用記錄功能。預設值為1.0
。
停用或修改現有後端服務的記錄功能
主控台
前往 Google Cloud 控制台的「Load Balancing」(負載平衡) 頁面。
點選負載平衡器的名稱。
按一下「編輯」圖示
。按一下「後端設定」。
按一下後端服務旁的
「Edit」(編輯)。如要完全停用記錄功能,請在「Logging」部分取消勾選「Enable logging」核取方塊。
如果您保持啟用記錄功能,即可設定不同的「Sample rate」(取樣率) 分數。您可以設定從
0.0
到1.0
的數字,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。預設值為1.0
。舉例來說,0.2
表示 20% 的取樣要求會產生記錄。點選「更新」,完成編輯後端服務。
按一下「更新」,完成負載平衡器的編輯作業。
gcloud:全域模式
使用 gcloud compute backend-services update
指令停用後端服務的記錄功能。
完全停用記錄功能
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --no-enable-logging
其中
--global
表示後端服務是全域服務。請將這個欄位用於與全域外部應用程式負載平衡器搭配使用的後端服務。--no-enable-logging
可停用該後端服務的記錄功能。
啟用現有後端服務的選填記錄欄位
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
其中
--logging-sample-rate
可讓您指定介於0.0
到1.0
之間的值,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。這個值僅在使用--enable-logging
參數時有作用。啟用記錄功能但將取樣率設為0.0
,等同於停用記錄功能。預設值為1.0
。--logging-optional
可讓您指定要納入記錄中的選用欄位:INCLUDE_ALL_OPTIONAL
來納入所有選填欄位。EXCLUDE_ALL_OPTIONAL
(預設) 可排除所有選填欄位。CUSTOM
包含您在OPTIONAL_FIELDS
中指定的選填欄位自訂清單。
--logging-optional-fields
可讓您指定要納入記錄的選用欄位清單,並以半形逗號分隔。舉例來說,只有在
LOGGING_OPTIONAL_MODE
設為CUSTOM
時,才能設定tls.protocol,tls.cipher
。如果您使用自訂指標,且想要記錄 ORCA 負載報表的元素,請將LOGGING_OPTIONAL_MODE
設為CUSTOM
,並指定OPTIONAL_FIELDS
欄位中必須記錄的元素。例如:orca_load_report.cpu_utilization,orca_load_report.mem_utilization
。
將記錄選用模式從「自訂」更新為其他模式
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=
其中
--logging-optional
可讓您指定要納入記錄中的選用欄位:INCLUDE_ALL_OPTIONAL
來納入所有選填欄位。EXCLUDE_ALL_OPTIONAL
(預設) 可排除所有選填欄位。
--logging-optional-fields
必須明確設定,如上所示,才能清除任何現有的CUSTOM
欄位。這個 API 不允許您將非CUSTOM
模式與CUSTOM
欄位結合。
修改記錄取樣率
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --logging-sample-rate=VALUE
gcloud:傳統模式
使用 gcloud compute backend-services update
指令停用後端服務的記錄功能。
完全停用記錄功能
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --no-enable-logging
其中
--global
表示後端服務是全域服務。請將這個欄位用於與傳統版應用程式負載平衡器搭配使用的後端服務。--no-enable-logging
可停用該後端服務的記錄功能。
修改記錄取樣率
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --logging-sample-rate=VALUE
其中
--global
表示後端服務是全域服務。請將這個欄位用於與傳統版應用程式負載平衡器搭配使用的後端服務。--logging-sample-rate
可讓您指定介於0.0
到1.0
之間的值,其中0.0
表示不會記錄任何要求,1.0
則代表有 100% 的要求會記錄完畢。這個值僅在使用--enable-logging
參數時有作用。啟用記錄功能但將取樣率設為0.0
,等同於停用記錄功能。
查看記錄
如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導):
系統會依序按照轉送規則和網址對應為 HTTP(S) 記錄建立索引。
如要查看記錄,請前往「Logs Explorer」頁面:
如要查看所有記錄,請在「Resource」篩選器選單中,依序選取「Cloud HTTP Load Balancer」>「All forwarding rules」。
如要查看單一轉送規則的記錄,請選取單一轉送規則名稱。
如要查看某個網址對應的記錄,請依序選取轉送規則和網址對應。
「布林」類型的記錄欄位通常只會在欄位的值為 true
時才會顯示。如果布林欄位的值為 false
,則記錄檔會省略該欄位。
系統會對記錄檔欄位強制採用 UTF-8 編碼。非 UTF-8 字元的字元都會替換為問號。針對傳統版應用程式負載平衡器和全域外部應用程式負載平衡器,您可以使用資源記錄 (resource.type="http_load_balancer"
) 匯出記錄指標。系統會根據「應用程式負載平衡器規則 (記錄指標)」資源 (l7_lb_rule
) 建立指標,該資源會顯示於 Cloud Monitoring 資訊主頁下方,而不是 https_lb_rule
資源下方。
記錄內容
外部應用程式負載平衡器記錄項目包含的資訊實用,有助於監控 HTTP(S) 流量及執行偵錯作業。記錄包含必要欄位,這些欄位是每個記錄的預設欄位。
記錄檔包含選用欄位,可提供 HTTP(S) 流量的其他資訊。如不需要,也可以跳過選填欄位,節省儲存空間費用。
某些記錄欄位採用多欄位格式,也就是指定欄位會包含多項資料。舉例來說,tls
欄位採用 TlsInfo
格式,其中包含 earlyDataRequest
欄位。下表說明這些多欄位格式的欄位。
欄位 | 欄位格式 | 欄位類型:必要或選填 | 說明 |
---|---|---|---|
severity insertID logName |
LogEntry | 必填 | 記錄項目中所述的一般欄位。 |
時間戳記 | string (Timestamp 格式) | 選用 | 第一層 GFE 收到要求的時間。 |
httpRequest | HttpRequest | 必填 | 用於記錄 HTTP 要求的常用通訊協定。
|
resource | MonitoredResource | 必填 | MonitoredResource 是與記錄檔項目相關聯的資源類型。 MonitoredResourceDescriptor 會使用類型名稱和一組標籤,描述 |
jsonPayload | object (Struct format) | 必填 | 以 JSON 物件表示的記錄項目酬載。JSON 物件包含下列欄位:
|
字串 | 必填 | statusDetails 欄位會包含字串,說明負載平衡器為何傳回 HTTP 狀態碼。如要進一步瞭解這些記錄字串,請參閱「statusDetails HTTP 成功訊息」和「statusDetails HTTP 失敗訊息」。 |
|
字串 | 必填 | backendTargetProjectNumber 欄位會保留建立後端目標 (後端服務或後端 bucket) 的專案編號。這個欄位的格式為 "projects/PROJECT_NUMBER" 。這項資訊僅適用於使用自訂錯誤回應的全域外部應用程式負載平衡器。 |
|
整數 | 必填 | overrideResponseCode 會保留套用至傳送至用戶端的回應的覆寫回應代碼。這項資訊僅適用於使用自訂錯誤回應的全域外部應用程式負載平衡器。 |
|
字串 | 必填 | errorService 欄位會保留提供自訂錯誤回應的後端服務。這項資訊僅適用於使用自訂錯誤回應的全域外部應用程式負載平衡器。 |
|
字串 | 必填 | errorBackendStatusDetails 欄位會保留傳送至用戶端的最終回應的 statusDetails 。這項資訊僅適用於使用自訂錯誤回應的全域外部應用程式負載平衡器。 |
|
AuthzPolicyInfo | 必填 | authzPolicyInfo 欄位會儲存授權政策結果的相關資訊。這項資訊僅適用於已啟用
授權政策的全域外部應用程式負載平衡器。詳情請參閱
授權政策記錄的內容。 |
|
字串 | 選用 | 只有在您使用傳統版應用程式負載平衡器遷移功能時,才會填入 loadBalancingScheme 欄位。這個欄位會保留字串,說明用於將要求轉送至哪個負載平衡配置。可能的值為 EXTERNAL 或 EXTERNAL_MANAGED 。 |
|
TlsInfo | 必填 |
使用
您無法將 |
|
OrcaLoadReport | 選用 |
使用
您也可以將 |
TlsInfo 欄位格式
欄位 | 欄位格式 | 欄位類型:必要或選填 | 說明 |
---|---|---|---|
protocol | 字串 | 選用 | 用戶端用來與負載平衡器建立連線的 TLS 通訊協定。可能的值為 TLSv1 、TLSv1.1 、TLSv1.2 、TLSv1.3 或 QUIC 。如果用戶端未使用 TLS/SSL 加密,這個值會設為 NULL 。 |
cipher | 字串 | 選用 | 用戶端用於與負載平衡器建立連線的 TLS 加密。如果用戶端未使用 HTTP(S),或未使用 TLS/SSL 加密,則會將此值設為 NULL 。 |
earlyDataRequest | 布林值 | 必填 | 這項要求會在 TLS 握手中加入早期資料。 |
資源標籤
下表列出 resource.type="http_load_balancer"
的資源標籤。
欄位 | 類型 | 說明 |
---|---|---|
backend_service_name |
字串 | 後端服務的名稱。 |
forwarding_rule_name |
字串 | 轉送規則物件的名稱。 |
project_id |
字串 | 與此資源相關聯的 Google Cloud 專案 ID。 |
target_proxy_name |
字串 | 轉送規則所參照的目標 Proxy 物件名稱。 |
url_map_name |
字串 | 設定用來選取後端服務的網址對應物件名稱。 |
zone |
字串 | 負載平衡器執行的區域。區域為 global 。 |
statusDetails HTTP 成功訊息
statusDetails (成功) | 意義 | 常見隨附回應代碼 |
---|---|---|
byte_range_caching
|
透過 Cloud CDN 位元組範圍快取提供 HTTP 要求。 | 可能出現任何可快取的回應碼。 |
response_from_cache
|
從 Cloud CDN 快取提供 HTTP 要求。 | 可能出現任何可快取的回應碼。 |
response_from_cache_validated
|
從通過後端驗證的 Cloud CDN 快取項目設定傳回碼。 | 可能出現任何可快取的回應碼。 |
response_sent_by_backend
|
成功將 HTTP 要求經由 Proxy 傳送至後端,且後端傳回回應。 | 在後端執行的軟體會設定 HTTP 回應碼。 |
statusDetails HTTP 失敗訊息
statusDetails (失敗) | 意義 | 常見的隨附狀態碼 |
---|---|---|
aborted_request_due_to_backend_early_response
|
後端提早傳送含有狀態碼的回應,因此已取消含有主體的要求。已將回應轉送給用戶端。 已終止要求。 | 4XX 或 5XX
|
backend_connection_closed_after_partial_response_sent
|
在將部分回應傳送給用戶端後,後端連線意外關閉。 | 後端執行的軟體會設定 HTTP 狀態碼。HTTP 狀態碼 如果 HTTP(S) 連線已升級為 WebSocket 連線,則 HTTP 狀態碼為 |
backend_connection_closed_before_data_sent_to_client
|
在將回應經由 Proxy 傳送至用戶端前,後端意外關閉其負載平衡器連線。 | 502、503 如果 HTTP(S) 連線已升級為 WebSocket 連線,則 HTTP 狀態碼為 |
backend_early_response_with_non_error_status
|
在收到整個要求主體前,後端將非錯誤狀態碼 (1XX 或 2XX ) 傳送給要求。 |
502 、503
|
backend_interim_response_not_supported
|
在不支援臨時回應的情況中,後端傳送臨時 1XX 狀態碼給要求。 |
|
backend_response_corrupted
|
後端傳送的 HTTP 回應主體的區塊傳輸編碼無效或毀損。 | 根據毀損的性質,可能出現任何狀態碼。通常是 502 、503 。 |
backend_response_headers_too_long
|
後端傳送的 HTTP 回應標頭超過允許上限。詳情請參閱「外部應用程式負載平衡器的標頭大小」一節。 | 502 、503
|
backend_timeout
|
後端在產生回應時逾時。 針對 WebSocket 連線:
|
如果 HTTP(S) 連線已升級為 WebSocket 連線,則 HTTP 狀態碼為 |
banned_by_security_policy
|
這項要求遭到 Google Cloud Armor 以費率為準的封鎖規則禁止。 | 429
|
body_not_allowed
|
用戶端傳送含有主體的 HTTP 要求,但使用的 HTTP 方法不允許有主體。 | 400
|
byte_range_caching_aborted
|
負載平衡器先前收到的回應指出資源可快取且支援位元組範圍。Cloud CDN 收到不一致的回應 (例如,狀態碼與預期的 206 Partial Content 不同)。這是在嘗試使用位元組範圍要求執行快取填補作業時發生的情況。因此,負載平衡器已取消對用戶端的回應。 |
2XX
|
byte_range_caching_forwarded_backend_response
|
負載平衡器先前收到的回應指出資源可快取且支援位元組範圍。Cloud CDN 收到不一致的回應 (例如,狀態碼與預期的 206 Partial Content 不同)。這是在嘗試使用位元組範圍要求執行快取填補作業時發生的情況。負載平衡器隨後將不一致的回應轉送給用戶端。 |
從後端傳回;可能出現任何狀態碼。 |
byte_range_caching_retrieval_abandoned
|
用戶端已取消 Cloud CDN 所起始的位元組範圍要求或驗證要求。 | 從後端傳回;可能出現任何狀態碼。 |
byte_range_caching_retrieval_from_backend_failed_after_partial_response
|
Cloud CDN 所起始的位元組範圍要求或驗證要求發生錯誤。如需詳細後端狀態,請參閱對應的 Cloud Logging 記錄項目,瞭解 Cloud CDN 所起始的要求。 | 2XX
|
cache_lookup_failed_after_partial_response
|
發生內部錯誤,因此負載平衡器無法從 Cloud CDN 快取提供完整回應。 | 2XX
|
cache_lookup_timeout_after_partial_response
|
Cloud CDN 快取查詢串流逾時,因為用戶端並未及時擷取內容。 | 2XX
|
client_disconnected_after_partial_response
|
在負載平衡器傳送部分回應後,用戶端連線已中斷。 | 從後端傳回;可能出現任何狀態碼。 如果 HTTP(S) 連線已升級為 WebSocket 連線,則 HTTP 狀態碼為 |
client_disconnected_before_any_response
|
在負載平衡器傳送任何回應前,用戶端連線已中斷。 |
如果 HTTP(S) 連線已升級為 WebSocket 連線,則 HTTP 狀態碼為 |
client_timed_out
|
由於對要求或回應進行 Proxy 處理時缺乏進度,Google 前端 (GFE) 因閒置而中斷用戶端連線。 | 0 或 408
|
client_cert_invalid_rsa_key_size
|
用戶端葉狀憑證或中繼憑證的 RSA 金鑰大小無效。詳情請參閱「關閉連線的記錄錯誤」。 | 0
|
client_cert_unsupported_elliptic_curve_key
|
用戶端或中繼憑證使用不支援的橢圓曲線。詳情請參閱「關閉連線的記錄錯誤」。 | 0
|
client_cert_unsupported_key_algorithm
|
用戶端或中繼憑證使用非 RSA 或非 ECDSA 演算法。詳情請參閱「關閉連線的記錄錯誤」。 | 0
|
client_cert_pki_too_large
|
用於驗證的 PKI 包含超過十張中繼憑證,這些憑證共用相同的主體和主體公開金鑰資訊。詳情請參閱「已關閉連線的記錄錯誤」。 | 0
|
client_cert_chain_max_name_constraints_exceeded
|
用於驗證的中繼憑證有超過十個名稱限制。詳情請參閱「關閉連線的記錄錯誤」。 | 0
|
client_cert_chain_invalid_eku |
用戶端憑證或其核發者沒有包含 clientAuth 的擴充金鑰用途。詳情請參閱「關閉連線的記錄錯誤」。 |
0
|
client_cert_validation_timed_out
|
驗證憑證鏈結時超過時間限制。 詳情請參閱「關閉連線的記錄錯誤」。 | 0
|
client_cert_validation_search_limit_exceeded
|
嘗試驗證憑證鏈結時,已達到深度或迭代限制。詳情請參閱「關閉連線的記錄錯誤」。 | 0
|
client_cert_validation_not_performed
|
您已設定 mTLS,但未設定 TrustConfig 。詳情請參閱「關閉連線的記錄錯誤」。 |
0
|
client_cert_not_provided
|
在握手期間,用戶端未提供要求的憑證。詳情請參閱「關閉連線的記錄錯誤」。 | 0
|
client_cert_validation_failed
|
使用 MD4、MD5 和 SHA-1 等雜湊演算法時,用戶端憑證無法通過 TrustConfig 的驗證。詳情請參閱「關閉連線的記錄錯誤」。 |
0
|
config_not_found
|
負載平衡器缺少專案設定。這可能會間歇性發生,尤其是在您變更設定並新增資源後。 另一個可能導致錯誤的原因是第一層 GFE 無法連線至第二層 GFE。這可能是因為內部錯誤 (例如正在進行的部署作業、負載平衡器超載,或間歇性設定問題) 所致。 這些錯誤是暫時性的,且符合SLA。不過,如果錯誤率超過 0.01%,請與Google Cloud 支援團隊聯絡,尋求進一步協助。 |
404 、502 、503
|
direct_response
|
負載平衡器已覆寫這項要求,並傳回固定回應。 | 視問題的性質而定,您可能會看到任何 HTTP 狀態碼。舉例來說,HTTP 410 狀態碼表示後端因未繳款而無法使用。 |
denied_by_security_policy
|
由於有 Google Cloud Armor 安全性政策,負載平衡器已拒絕這個要求。 | 在安全性政策中設定。 |
error_uncompressing_gzipped_body
|
解壓縮以 gzip 格式壓縮的 HTTP 回應時發生錯誤。 | 502 、503
|
failed_to_connect_to_backend
|
負載平衡器無法連線至後端。這包括連線階段的逾時。 | 502 、503 |
failed_to_pick_backend
|
負載平衡器無法挑選健康狀態良好的後端來處理要求。 | 502 、503
|
failed_to_negotiate_alpn
|
負載平衡器和後端無法交涉要用來在 TLS 上彼此溝通的應用程式層通訊協定 (例如 HTTP/2)。 | 502 、503
|
headers_too_long
|
要求標頭超過系統規定的上限。 | 413
|
http_version_not_supported
|
HTTP 版本不受支援。僅支援 HTTP 0.9、1.0、1.1 和 2.0。 | 400
|
internal_error
|
負載平衡器發生內部錯誤。通常代表負載平衡器基礎架構中的暫時性錯誤。重試查詢。 | 4XX
|
invalid_external_origin_endpoint
|
外部後端的設定無效。查看網際網路 NEG 設定,確認其指定的 FQDN/IP 位址和通訊埠有效。 | 4XX
|
invalid_request_headers
|
從用戶端收到的 HTTP 要求標頭,至少包含一個不符合適用 HTTP 規格規定的字元。 舉例來說,標頭欄位名稱若包含雙引號 ( 如需詳細資訊,請參閱: |
400
|
invalid_http2_client_header_format
|
來自用戶端的 HTTP/2 標頭無效。詳情請參閱 invalid_request_headers 。 |
400
|
invalid_http2_client_request_path
|
來自用戶端的 HTTP/2 要求路徑至少包含一個不符合 URI 規範的字元。 詳情請參閱「3.3. 路徑」一節。 |
400
|
multiple_iap_policies
|
您無法合併多個 Identity-Aware Proxy (IAP) 政策。如果您已將 IAP 政策套用至後端服務,並將另一項政策套用至無伺服器物件,請移除其中一個政策,然後再試一次。無伺服器物件包括 App Engine、Cloud Run 和 Cloud Run 函式。 | 500
|
malformed_chunked_body
|
要求主體並未以正確的方式進行區塊編碼。 | 411
|
request_loop_detected
|
負載平衡器偵測到要求迴圈。這個迴圈可能是由於後端將要求轉送回負載平衡器的設定錯誤所造成。 | 502 、503
|
required_body_but_no_content_length
|
HTTP 要求需要主體,但要求標頭並未包含內容長度或傳輸編碼區塊標頭。 | 400 、403 、411
|
secure_url_rejected
|
在明文 HTTP/1.1 連線上收到含有 https:// 網址的要求。 |
400
|
server_cert_chain_exceeded_limit
|
伺服器憑證鏈結過長 (包含的伺服器憑證中繼憑證超過 10 個)。 | 502 、503 |
|
伺服器憑證含有 Extended Key Usage (EKU) 副檔名欄位,但該欄位不含 serverAuth 。 |
|
|
用於驗證的中繼憑證有超過 10 個名稱限制。 | 502 、503 |
server_cert_exceeded_size_limit
|
伺服器憑證酬載 (包括任何中繼憑證) 過大 (超過 16 KB)。 | 503 |
server_cert_invalid_rsa_key_size
|
伺服器或中介憑證的 RSA 金鑰大小無效。 不會執行驗證。 RSA 金鑰的長度可介於 2048 至 4096 位元之間。 |
503 |
server_cert_not_provided
|
伺服器在握手期間未提供要求的憑證。 | 503 |
server_cert_pki_too_large
|
用於驗證的 PKI 包含超過十張共用相同主體和主體公開金鑰資訊的中繼憑證。 不會執行驗證。 |
503 |
server_cert_trust_config_not_found
|
找不到相符的 TrustConfig 。 |
503 |
server_cert_unsupported_elliptic_curve_key
|
伺服器或中繼憑證使用不支援的橢圓曲線。 不會執行驗證。 有效的曲線為 P-256 和 P-384。 |
503 |
server_cert_unsupported_key_algorithm
|
伺服器或中繼憑證使用非 RSA 或非 ECDSA 演算法。 不會執行驗證。 |
503 |
server_cert_validation_internal_error
|
驗證憑證鏈結時發生內部錯誤。 | 503 |
server_cert_validation_not_performed
|
您未設定 |
503 |
server_cert_validation_search_limit_exceeded
|
嘗試驗證憑證鏈結時,已達到深度或迭代限制。 憑證鏈的深度上限為十層,包括根憑證和伺服器憑證。迭代次數上限為 100 (檢查憑證以驗證伺服器憑證鏈結)。 |
503 |
server_cert_validation_timed_out
|
嘗試驗證憑證鏈結時超過時間限制。 | 503 |
server_cert_validation_unavailable
|
服務無法執行憑證鏈結驗證。 | 503 |
ssl_certificate_san_verification_failed
|
負載平衡器無法在符合設定主機名稱的後端提供的 SSL 憑證中找到主體別名 (SAN)。 | 502 、503
|
ssl_certificate_chain_verification_failed
|
後端提供的安全資料傳輸層 (SSL) 憑證無法通過 SSL 憑證驗證。 | 502 、503
|
throttled_by_security_policy
|
這項要求遭到 Google Cloud Armor 節流規則封鎖。 | 429
|
unsupported_method
|
用戶端提供不支援的 HTTP 要求方法。 | 400
|
unsupported_100_continue
|
用戶端要求在未支援的通訊協定中加入了「Expect: 100-continue」標頭。 | 400
|
upgrade_header_rejected
|
用戶端 HTTP 要求包含 Upgrade 標頭且遭到拒絕。 | 400
|
websocket_closed
|
WebSocket 連線已關閉。 | 101
|
websocket_handshake_failed
|
WebSocket 握手失敗。 | 根據交握失敗的性質,可能出現任何狀態碼。 |
request_body_too_large
|
HTTP 要求主體超過後端支援的上限。不適用於 VM 後端。 | 413 |
handled_by_identity_aware_proxy
|
這個回應是由 Identity-Aware Proxy 在允許存取權之前,驗證用戶端身分時產生。 |
|
serverless_neg_routing_failed
|
無法調度無伺服器 NEG 要求。如果無法存取 NEG 中指定的區域,或是找不到資源名稱 (例如 Cloud Run 函式名稱),就會發生這個錯誤。 | 404 、502 、503
|
fault_filter_abort
|
如果客戶已設定錯誤篩選器,且系統為指定要求觸發錯誤篩選器,就可能發生此錯誤。 | 值必須介於 200 至 599 之間。 |
early_data_rejected
|
透過 TLS 早期資料傳送的要求無效。 這可能發生於下列情況,但不限於:
|
425 |
查看 mTLS 用戶端憑證驗證記錄
如要在雙向 TLS 用戶端憑證驗證期間查看已記錄的已關閉連線錯誤,請完成下列步驟。
控制台查詢
前往 Google Cloud 控制台的「Logs Explorer」頁面。
按一下「顯示查詢」切換鈕。
將下列內容貼到查詢欄位中。將
FORWARDING_RULE_NAME
替換為轉送規則的名稱。jsonPayload.statusDetails=~"client_cert" jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
點選「執行查詢」
授權政策要求記錄
Load Balancer 記錄項目 JSON 酬載中的 authz_info
物件包含授權政策相關資訊。您可以針對這些政策允許或拒絕的流量,設定以記錄為基礎的指標。如要查看更多授權政策記錄詳細資料,請參閱這篇文章。
欄位 | 類型 | 說明 |
---|---|---|
authz_info.policies[] |
物件 | 符合要求的政策清單。 |
authz_info.policies[].name |
字串 | 符合要求的授權政策名稱。 名稱為空白的原因如下:
|
authz_info.policies[].result |
enum | 結果可以是 ALLOWED 或 DENIED 。 |
authz_info.policies[].details |
字串 | 詳細資料包括:
|
authz_info.overall_result |
enum | 結果可以是 ALLOWED 或 DENIED 。 |
Google Cloud Armor 記錄
statusDetail
HTTP 失敗訊息的資料表包含一些適用於 Google Cloud Armor 的訊息。如要進一步瞭解 Google Cloud Armor 記錄的內容,請參閱「使用要求記錄」一文。
共用虛擬私有雲部署作業的記錄
應用程式負載平衡器記錄和指標通常會匯出至含有轉送規則的專案。因此,服務管理員 (也就是建立後端服務的專案擁有者或使用者) 預設不會有權存取負載平衡器的記錄和指標。您可以使用 IAM 角色,將這些權限授予服務管理員。如要進一步瞭解可用的身分與存取權管理角色,以及提供存取權的步驟,請參閱「授予 Monitoring 存取權」。
與記錄檔互動
您可以使用 Cloud Logging API 與外部應用程式負載平衡器記錄互動。Logging API 可讓您透過多種互動方式篩選已設定特定欄位的記錄。它會將符合條件的記錄匯出至 Cloud Logging、Cloud Storage、BigQuery 或 Pub/Sub。如要進一步瞭解 Logging API,請參閱「Logging API 總覽」。
監控
您可以使用監控指標執行下列操作:
- 評估負載平衡器的設定、用量和效能
- 排解問題
- 改善資源利用率和使用者體驗
指標回報頻率與保留期
外部應用程式負載平衡器的指標會以 1 分鐘的精細度批次匯出至 Cloud Monitoring,而監控資料則會保留 6 週。
資訊主頁會以 1H (一小時)、6H (六小時)、1D (一天)、1W (一週) 和 6W (六週) 的預設間隔時間提供資料分析。您可以手動要求以 6W 到 1 分鐘之間的任何間隔時間進行資料分析。
監控指標
您可以監控外部應用程式負載平衡器的下列指標。
下列全域外部應用程式負載平衡器指標會回報至 Cloud Monitoring。這些指標會在開頭加上 loadbalancing.googleapis.com/
。
指標 | 名稱 | 說明 |
---|---|---|
要求數量 | https/request_count |
外部應用程式負載平衡器提供的要求數量 |
要求位元組數 | https/request_bytes_count |
以要求形式從用戶端傳送至外部應用程式負載平衡器的位元組數 |
回應位元組數 | https/response_bytes_count |
以回應形式從外部應用程式負載平衡器傳送至用戶端的位元組數 |
總延遲時間 | https/total_latencies |
總延遲時間的分布情形。總延遲時間是指 Proxy 收到要求的第一個位元組,到 Proxy 傳送回應的最後一個位元組之間的時間,以毫秒為單位。包括:Proxy 處理要求所需的時間、從 Proxy 傳送至後端的時間、後端處理要求所需的時間、回應傳回 Proxy 所需的時間,以及 Proxy 處理回應並將回應傳送至用戶端所需的時間。 不包含用戶端和 Proxy 之間的 RTT。此外,在使用 對於 WebSocket 連線,這個欄位是指連線的整個時間長度。* 範例:負載平衡器每秒有 1 個來自英國的要求 (全部都有 100 毫秒的延遲時間),且每秒有 9 個來自美國的要求 (全部都有 50 毫秒的延遲時間)。在某一分鐘內,有 60 個來自 UK 的要求,以及 540 個來自 US 的要求。Monitoring 指標會保留所有維度的分布情形。您可以要求下列資訊:
|
前端 RTT† | https/frontend_tcp_rtt |
前端 RTT 的分布情形。前端 RTT 是指資料從用戶端傳送至 Proxy 再傳回所需的時間 (以毫秒為單位)。包括要求從用戶端傳送至 Proxy,再從 Proxy 傳送回用戶端所需的時間。這項值不會在連線的生命週期中更新。舉例來說,使用 3 方握手動作設定 (TCP) 連線,需要 1.5 次 RTT。 處理要求時,負載平衡器會取樣並計算資料在用戶端和 Proxy 之間來回傳輸所需的時間,然後記錄經過平滑處理的 RTT 值。平滑 RTT 是一種演算法,可處理 RTT 評估中可能發生的變化和異常情形。 |
後端延遲時間† | https/backend_latencies |
後端延遲時間的分布情形。後端延遲時間是指後端收到要求的第一個位元組,到 Proxy 收到回應的最後一個位元組之間的時間 (以毫秒為單位)。包括:從 Proxy 傳送至後端的要求所需時間、後端處理要求所需時間,以及將回應傳回 Proxy 所需時間。 |
回應碼類別分數 | 各個回應碼類別 (2XX 、4XX ...) 中外部應用程式負載平衡器回應總數的分數。在「監控」中,這個值僅適用於預設資訊主頁。自訂資訊主頁無法提供。您可以使用 Monitoring API 為其設定快訊。 |
|
後端要求數量 | https/backend_request_count |
從外部應用程式負載平衡器傳送至後端的要求數量。 |
後端要求位元組數 | https/backend_request_bytes_count |
以要求形式從外部應用程式負載平衡器傳送至後端的位元組數。 |
後端回應位元組數 | https/backend_response_bytes_count |
以回應形式從後端 (包括快取) 傳送至外部應用程式負載平衡器的位元組數。 |
*如要監控 WebSocket 連線,請建立專門用於 WebSocket 的後端服務。
† 前端 RTT 與後端延遲時間的總和可能不小於或等於總延遲時間。原因在於,雖然我們在確認 HTTP 回應時,透過通訊端從 GFE 到用戶端對 RTT 進行輪詢,但我們使用核心報表功能進行某些測量,且無法保證核心會有指定 HTTP 回應的 RTT 測量。最後會得到平滑 RTT 值,這也是受到先前 HTTP 回應、SYN/ACK 和安全資料傳輸層 (SSL) 交握的影響,但這些因素不會影響目前的 HTTP 要求實際時間。
篩選指標的維度
您可以為外部應用程式負載平衡器的指標套用篩選器。
系統會針對每個傳統版應用程式負載平衡器和全域外部應用程式負載平衡器匯總指標。您可以依據下列維度篩選 resource.type="http_load_balancer"
或 resource.type="https_lb_rule"
的匯總指標。請注意,並非所有維度都適用於所有指標。
屬性 | 說明 |
---|---|
backend_scope |
提供連線的後端服務執行個體群組的 Google Cloud 範圍 (地區或區域)。 如果沒有任何可用的執行個體群組,或如果要求是由其他實體提供,則會顯示下列其中一個值,而不是後端服務執行個體群組的地區或區域。
選擇這個細分方式時,圖表會顯示後端指標 (負載平衡器至後端),而不是顯示前端指標 (用戶端至負載平衡器)。 |
backend_type |
為用戶端要求提供服務的後端群組名稱。如果未指派後端,則會傳回
|
backend_target_type |
處理要求的後端服務名稱。如果未指派後端,可以是 BACKEND_SERVICE 、BACKEND_BUCKET 或 UNKNOWN ;如果在選取後端或發生網址重新導向前發生錯誤或其他中斷問題,則可以是 NO_BACKEND_SELECTED 。 |
matched_url_path_rule |
符合 HTTP(S) 要求前置字串的網址對應路徑規則 (最多 50 個字元)。 |
forwarding_rule_name |
用戶端用來傳送要求的轉送規則名稱。 |
url_map_name |
網址對應路徑規則或轉送規則,設定為網址對應鍵的一部分。可以把
|
target_proxy_name |
轉送規則所參照的目標 HTTP(S) Proxy 物件名稱。 |
backend_target_name |
後端目標的名稱。目標可以是後端服務或後端值區。如果未指派後端,系統會傳回 UNKNOWN 。 |
backend_name |
後端執行個體群組、值區或 NEG 的名稱。如果未指派後端,系統會傳回 UNKNOWN ;如果在選取後端或發生網址重新導向前,發生錯誤或其他中斷問題,則會傳回 NO_BACKEND_SELECTED 。 |
backend_scope_type |
後端群組範圍的類型。如果在選取後端或發生網址重新導向之前發生錯誤或其他中斷情形,或是其他可能的 backend_type 輸出,則可以是 使用區塊快取時,會使用 |
proxy_continent |
終止 HTTP(S) 連線的 HTTP(S) GFE 所在大洲,例如 America 、Europe 、Asia |
protocol |
用戶端使用的通訊協定,可選值為 HTTP/1.0 、HTTP/1.1 、HTTP/2.0 、QUIC/HTTP/2.0 和 UNKNOWN 。 |
response_code |
要求的 HTTP 狀態碼。 |
response_code_class |
要求的 HTTP 狀態碼類別:200 、300 、400 、500 或 0 (如果沒有則為空白)。 |
cache_result |
透過 Proxy 服務 HTTP 要求的快取結果:HIT 、MISS 、DISABLED 、PARTIAL_HIT (針對部分從快取提供,部分從後端提供的請求) 或 UNKNOWN 。 |
client_country |
發出 HTTP 要求的用戶端國家/地區,例如 United States 或 Germany 。 |
load_balancing_scheme |
使用的負載平衡架構。如果使用傳統版應用程式負載平衡器,這個值為 EXTERNAL 。如果使用全域外部應用程式負載平衡器,則值為 EXTERNAL_MANAGED 。 |
後續步驟
- 閱讀 Cloud CDN 記錄總覽
- 請參閱快取相關說明。
- 請參閱已簽署的網址和 Cookie。