記錄
您可以啟用、停用及查看外部應用程式負載平衡器後端服務的記錄功能。 如果外部應用程式負載平衡器使用後端 bucket,系統會自動啟用記錄功能,且無法停用。
您可以為每個後端服務啟用或停用記錄功能。您可以設定要記錄所有要求,還是隨機取樣一小部分。
請務必確認您沒有適用於外部應用程式負載平衡器的記錄排除項目。如要瞭解如何確認系統允許 Cloud HTTP Load
Balancer 記錄,請參閱「排除篩選器」。
記錄取樣和收集
系統會對負載平衡器後端虛擬機器 (VM) 執行個體處理的要求 (和相應的回應) 進行取樣。接著系統會處理這些取樣要求,產生記錄。您可以根據 logConfig.sampleRate 參數,控制以記錄項目形式發出的要求比例。如果 logConfig.sampleRate 為 1.0 (100%),表示系統會為所有要求產生記錄,並寫入 Cloud Logging。
選填欄位
記錄包含必填欄位和選填欄位。「記錄內容」一節列出選填和必填欄位。所有必填欄位一律會納入。您可以自訂要保留哪些選填欄位。
如果選取「包含所有選用欄位」,記錄會包含記錄格式中的所有選用欄位。在記錄格式中新增選用欄位時,記錄會自動納入這些新欄位。
如果選取「排除所有選用欄位」,系統就會省略所有選用欄位。
如果選取「自訂」,可以指定要納入的選用欄位,例如
tls.protocol,tls.cipher,orca_load_report.cpu_utilization,orca_load_report.mem_utilization。
如要瞭解如何自訂選填欄位,請參閱「啟用新後端服務的記錄功能」。
啟用新後端服務的記錄功能
控制台
前往 Google Cloud 控制台的「Load Balancing」(負載平衡) 頁面。
點選負載平衡器的名稱。
按一下「Edit」(編輯)。
按一下「後端設定」。
選取「建立後端服務」。
填寫後端服務的必填欄位。
在「記錄」部分,勾選「啟用記錄」核取方塊。
設定「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則表示會記錄所有要求。這個欄位僅在使用--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」(編輯)。
按一下「後端設定」。
按一下後端服務旁的 「Edit」(編輯)。
在「記錄」部分,勾選「啟用記錄」核取方塊。
在「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 \
--logging-optional=LOGGING_OPTIONAL_MODE \
--logging-optional-fields=OPTIONAL_FIELDS
其中
--global表示後端服務是全域服務。這個欄位適用於全域外部應用程式負載平衡器使用的後端服務。--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時,才能設定這個值。如果您使用自訂指標,並想記錄 ORCA 載入報表的元素,請將LOGGING_OPTIONAL_MODE設為CUSTOM,並在OPTIONAL_FIELDS欄位中指定要記錄的元素。例如:orca_load_report.cpu_utilization,orca_load_report.mem_utilization。
停用或修改現有後端服務的記錄功能
控制台
前往 Google Cloud 控制台的「Load Balancing」(負載平衡) 頁面。
點選負載平衡器的名稱。
按一下「Edit」(編輯)。
按一下「後端設定」。
按一下後端服務旁的 「Edit」(編輯)。
如要完全停用記錄功能,請在「記錄」部分中,取消勾選「啟用記錄功能」核取方塊。
如果您保持啟用記錄功能,即可設定不同的「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則表示會記錄所有要求。這個值僅在使用--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。
將記錄選用模式從「CUSTOM」更新為其他模式
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則表示會記錄所有要求。這個值僅在使用--enable-logging參數時有作用。啟用記錄功能但將取樣率設為0.0,等同於停用記錄功能。
查看記錄
如要直接在 Google Cloud 控制台中,按照這項工作的逐步指南操作,請按一下「Guide me」(逐步引導):
系統會依序按照轉送規則和網址對應為 HTTP(S) 記錄建立索引。
如要查看記錄,請前往「Logs Explorer」頁面:
如要查看所有記錄,請在「Resource」(資源) 篩選器選單中,選取「Cloud HTTP Load Balancer」(Cloud HTTP 負載平衡器) > 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 format) | 選用 | 第一層 GFE 收到要求的時間。 |
| httpRequest | HttpRequest | 必填 | 記錄 HTTP 要求的常見通訊協定。
系統不會為 |
| 資源 | 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 欄位格式
| 欄位 | 欄位格式 | 欄位類型:必要或選填 | 說明 |
|---|---|---|---|
| 通訊協定 | 字串 | 選用 | 用戶端用來與負載平衡器建立連線的 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
|
要求遭到 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
|
Google 前端 (GFE) 在對要求或回應進行 Proxy 處理時缺乏進度,因此因閒置而中斷用戶端連線。 | 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 的擴充金鑰用途 (EKU)。詳情請參閱「已關閉連線的記錄錯誤」。 |
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 通訊。這可能是因為內部錯誤,例如正在進行的推出作業、負載平衡器過載,或是間歇性設定問題。 這些錯誤本質上是暫時性的,預計會遠低於服務等級協議。不過,如果錯誤率超過 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 或 5XX
|
invalid_chunk_framing |
使用 Transfer-Encoding:
Chunked 標頭傳送的要求和回應不符合 RFC 9112 規定。根據 RFC,chunked_body 和 last-chunk 欄位都必須以 CRLF 結尾。 |
400 |
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 規格不允許的字元。 |
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
|
retriable_error
|
負載平衡器發生基礎架構錯誤,可以重試要求。如果您進行設定變更,新增或參照新資源,就可能間歇發生這種情況。 如果內部錯誤導致第一層 GFE 無法與第二層 GFE 通訊,也可能發生這種情況,例如正在進行推出作業、負載平衡器超載,或發生間歇性設定問題。 這些錯誤本質上是暫時性的,預計會遠低於服務等級協議。不過,如果錯誤率在一段時間內超過 0.01%,請聯絡Google Cloud支援團隊尋求進一步協助。 |
404、502、503
|
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
|
您已設定 mTLS,但未設定 |
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
|
要求遭到 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 |
service_extension_error |
呼叫負載平衡器使用的服務擴充功能時發生錯誤。 如果 Wasm 外掛程式的回應速度過慢,且超過 1 毫秒的回應時間限制,就可能發生這種情況。 |
425 |
查看 mTLS 用戶端憑證驗證的記錄
如要查看已關閉連線的記錄錯誤,請完成下列步驟。
控制台查詢
前往 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
點選「執行查詢」
授權政策要求記錄
負載平衡器記錄項目 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。 |
後端值區的記錄
如果負載平衡器有後端 bucket,系統會自動啟用記錄功能。 您無法修改或停用後端 bucket 的記錄功能。
Cloud Armor 的記錄
statusDetail HTTP 失敗訊息的表格中,包含適用於 Cloud Armor 的訊息。如要進一步瞭解 Cloud Armor 記錄的內容,請參閱「使用要求記錄功能」。
共用 VPC 部署作業的記錄
應用程式負載平衡器記錄和指標通常會匯出至具有轉送規則的專案。因此,服務管理員 (後端服務所建立專案的擁有者或使用者) 預設無法存取負載平衡器的記錄和指標。您可以透過 IAM 角色,將這些權限授予服務管理員。如要進一步瞭解可用的 IAM 角色,以及提供存取權的步驟,請參閱「授予 Monitoring 存取權」。
與記錄互動
您可以使用 Cloud Logging API 與外部應用程式負載平衡器記錄互動。Logging API 可讓您透過多種互動方式,篩選已設定特定欄位的記錄。並將相符的記錄檔匯出至 Cloud Logging、Cloud Storage、BigQuery 或 Pub/Sub。如要進一步瞭解 Logging API,請參閱「Logging API 總覽」。
監控
負載平衡器會將監控資料匯出到 Monitoring。
監控指標可用於以下目的:
- 評估負載平衡器的設定、用量和效能
- 排解問題
- 改善資源利用率和使用者體驗
除了 Monitoring 中預先定義的資訊主頁,您可透過 Cloud Monitoring API 建立自訂資訊主頁、設定快訊及查詢指標。
查看預先定義的 Cloud Monitoring 資訊主頁
Cloud Monitoring 提供預先定義的資訊主頁,可監控負載平衡器。監控服務會自動填入這些資訊主頁的資料。
除非目前專案中有負載平衡器,否則負載平衡器不會顯示為可監控的資源。
如要存取預先定義資訊主頁,請執行下列步驟:
前往 Google Cloud 控制台的「Monitoring」頁面。
在 Monitoring 導覽面板中,按一下「資訊主頁」。
在「類別」下方點選「GCP」。
如要查看所有 Google Cloud 負載平衡器的資訊主頁清單,請選取名為「Google Cloud Load Balancers」的資訊主頁。如要查看特定負載平衡器的資訊主頁,請在清單中找出負載平衡器,然後按一下其名稱。
如要只查看外部應用程式負載平衡器的預先定義資訊主頁,請選取名為「External HTTP(S) Load Balancers」(外部 HTTP(S) 負載平衡器) 的資訊主頁。這個頁面會顯示資訊主頁,其中列出專案中所有外部應用程式負載平衡器的 5XX 回應比率和後端延遲時間。此外,這個頁面也會列出專案中所有外部應用程式負載平衡器的資訊主頁。
您可以點選前往各個負載平衡器的資訊主頁。每個資訊主頁都包含下列項目:
- 預先填入的圖表,顯示依狀態碼類別 (
5xx、4xx、3xx、2xx) 細分的結果 - 總延遲時間
- 後端延遲時間
- 前端 RTT
- 要求數量
- 負載平衡器的記錄檔連結
- 預先填入的圖表,顯示依狀態碼類別 (
如要查看第三方服務的資訊主頁,請返回「資訊主頁」頁面。在「類別」下方,按一下「其他」。
- 如要查看特定第三方服務的資訊主頁,請在清單中找出該服務,然後按一下其名稱。
定義快訊政策
如要直接在 Google Cloud 控制台中,按照這項工作的逐步指南操作,請按一下「Guide me」(逐步引導):
您可以建立快訊政策來監控指標值,並在指標違反條件時收到通知。
-
前往 Google Cloud 控制台的 notifications「Alerting」(警告) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 如果您尚未建立通知管道,但想收到通知,請按一下「編輯通知管道」,然後新增通知管道。新增管道後,返回「快訊」頁面。
- 在「Alerting」(快訊) 頁面中,選取「Create policy」(建立政策)。
- 如要選取指標,請展開「選取指標」選單,然後執行下列操作:
- 如要將選單限制為相關項目,請在篩選列中輸入
Global External Application Load Balancer Rule。如果篩選選單後沒有顯示任何結果,請停用「僅顯示活躍的資源和指標」切換按鈕。 - 在「Resource type」(資源類型) 部分,選取「Global External Application Load Balancer Rule」(全域外部應用程式負載平衡器規則)。
- 選取「指標類別」和「指標」,然後選取「套用」。
- 如要將選單限制為相關項目,請在篩選列中輸入
- 點選「下一步」。
- 「設定快訊觸發條件」頁面中的設定會決定快訊的觸發時機。 選取條件類型,並視需要指定門檻。詳情請參閱「建立指標閾值快訊政策」。
- 點選「下一步」。
- 選用:如要新增通知至您的快訊政策,請按一下「通知管道」。在對話方塊中,從選單選取一或多個通知管道,然後按一下「確定」。
- 選用:更新「事件自動關閉期限」。這個欄位會決定 Monitoring 何時會在沒有指標資料的情況下關閉事件。
- 選用:按一下「說明文件」,然後在通知訊息中新增任何資訊。
- 按一下「快訊名稱」,然後輸入快訊政策的名稱。
- 點選「建立政策」。
定義 Cloud Monitoring 自訂資訊主頁
您可以為負載平衡器的指標建立自訂 Cloud Monitoring 資訊主頁:
前往 Google Cloud 控制台的「Monitoring」頁面。
依序選取「資訊主頁」>「建立資訊主頁」。
按一下「新增圖表」,然後為圖表命名。
如要識別要顯示的時間序列,請選擇資源類型和指標類型:
- 在「資源與指標」部分中,按一下圖表,然後在「選取指標」部分中,從可用選項中選取:
- 如果是全域外部應用程式負載平衡器,請選取「全域外部應用程式負載平衡器規則」資源類型。
- 按一下「套用」。
- 在「資源與指標」部分中,按一下圖表,然後在「選取指標」部分中,從可用選項中選取:
如要指定監控篩選器,請依序點選「篩選器」>「新增篩選器」。
按一下 [儲存]。
指標回報頻率與保留期
外部應用程式負載平衡器的指標會以 1 分鐘的精細程度批次匯出至 Cloud Monitoring。而監控資料則會保留 6 週。
資訊主頁會以 1H (一小時)、6H (六小時)、1D (一天)、1W (一週) 和 6W (六週) 的預設間隔時間提供資料分析。您可以手動要求以 6W 到 1 分鐘之間的任何間隔時間進行資料分析。
監控指標
您可以監控外部應用程式負載平衡器的下列指標。
下列全域外部應用程式負載平衡器指標會回報給 Cloud Monitoring。
| 指標 | 名稱 | 說明 |
|---|---|---|
| 已設定後端比率 (預覽) | network.googleapis.com/loadbalancer/backend/configured_rate |
每個後端群組設定的每秒要求數上限。 這是將目標容量乘以 (容量縮放器) 的結果 (如有指定)。 |
| 已設定的後端使用率 (預先發布版) | network.googleapis.com/loadbalancer/backend/configured_utilization |
以分數表示的 CPU 使用率上限容量,可針對每個後端群組設定。這是將目標容量乘以容量配置器 (如有指定) 的結果。 |
| 後端錯誤率 (預覽) | network.googleapis.com/loadbalancer/backend/error_rate |
每個後端群組每秒提供的錯誤數。 |
| 後端飽和度 (預覽版) | network.googleapis.com/loadbalancer/backend/fullness |
每個後端群組目前的飽和度 (以百分比表示),計算依據為負載平衡器的平衡模式。 |
| 後端延遲時間† | loadbalancing.googleapis.com/https/backend_latencies |
後端延遲時間的分佈情形。後端延遲時間是指從傳送至後端的要求的最後一個位元組,到 Proxy 接收回應的最後一個位元組之間的時間 (以毫秒為單位)。包括後端處理要求所耗費的時間,以及將回應傳回 Proxy 所耗費的時間。 |
| 後端負載平衡自訂指標 (預覽版) | network.googleapis.com/loadbalancer/backend/lb_custom_metric |
根據您定義的自訂指標,每個後端群組目前的使用率。 |
| 後端費率 (預覽) | network.googleapis.com/loadbalancer/backend/rate |
每個後端群組每秒收到的要求數。 |
| 後端使用率 (預先發布版) | network.googleapis.com/loadbalancer/backend/utilization |
群組中 VM 的 CPU 總使用率 (以分數表示)。 |
| 要求數量 | loadbalancing.googleapis.com/https/request_count |
由外部應用程式負載平衡器提供服務的要求數量 |
| 要求位元組數 | loadbalancing.googleapis.com/https/request_bytes_count |
以要求形式從用戶端傳送至外部應用程式負載平衡器的位元組數 |
| 回應位元組數 | loadbalancing.googleapis.com/https/response_bytes_count |
以回應形式從外部應用程式負載平衡器傳送至用戶端的位元組數 |
| 總延遲時間 | loadbalancing.googleapis.com/https/total_latencies |
總延遲時間的分佈情形。總延遲時間是指 Proxy 收到要求的第一個位元組,到 Proxy 傳送回應的最後一個位元組之間的時間,以毫秒為單位。包括 Proxy 處理要求所花的時間、要求從 Proxy 傳送至後端所花的時間、後端處理要求所花的時間、回應傳回 Proxy 所花的時間,以及 Proxy 處理回應並將回應傳送至用戶端所花的時間。 不包括用戶端與 Proxy 之間的 RTT。此外,在同一個連線上使用 如果是 WebSocket 連線,這個欄位是指連線的總時間長度。* 範例:負載平衡器每秒有 1 個來自英國的要求 (全部都有 100 毫秒的延遲時間),且每秒有 9 個來自美國的要求 (全部都有 50 毫秒的延遲時間)。在某一分鐘內,有 60 個來自英國的要求,以及 540 個來自美國的要求。Monitoring 指標會保留所有維度的分布情形。您可以要求下列資訊:
|
| 前端 RTT† | loadbalancing.googleapis.com/https/frontend_tcp_rtt |
前端 RTT 的分布情形。前端 RTT 是指資料從用戶端傳輸到 Proxy,再傳輸回用戶端所需的時間 (以毫秒為單位)。包括要求從用戶端傳送至 Proxy,以及從 Proxy 傳回用戶端所耗費的時間。連線期間不會更新這項資訊。舉例來說,使用 3 向交握設定 (TCP) 連線需要 1.5 個 RTT。 處理要求時,負載平衡器會取樣並平均計算資料在用戶端和 Proxy 之間來回傳輸所需的時間,然後記錄平滑 RTT 值。平滑 RTT 是一種演算法,可處理 RTT 測量中可能發生的變化和異常狀況。 |
| 回應碼類別分數 |
各個回應碼類別中 (2xx、4xx...) 的外部應用程式負載平衡器回應總數的分數。在 Monitoring 中,這個值只會顯示在預設資訊主頁上。自訂資訊主頁無法提供。您可以使用 Monitoring API 為其設定快訊。
|
|
| 後端要求數量 | loadbalancing.googleapis.com/https/backend_request_count |
從外部應用程式負載平衡器傳送至後端的要求數量。 |
| 後端要求位元組數 | loadbalancing.googleapis.com/https/backend_request_bytes_count |
以要求形式從外部應用程式負載平衡器傳送至後端的位元組數。 |
| 後端回應位元組數 | loadbalancing.googleapis.com/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;如果選取後端前發生錯誤或中斷,或發生網址重新導向,或使用無伺服器後端的傳統應用程式負載平衡器傳回 200 OK 回應,則為 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 |
後端目標的名稱。目標可以是後端服務或後端 bucket。如果未指派後端,則會傳回 UNKNOWN。
|
backend_name |
後端執行個體群組、值區或 NEG 的名稱。
如果未指派後端,系統會傳回 UNKNOWN;如果發生錯誤或中斷,導致系統無法選取後端、發生網址重新導向,或是採用無伺服器後端的傳統 Application Load Balancer 傳回 200 OK 回應,則會傳回 NO_BACKEND_SELECTED。 |
backend_scope_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。 |
後續步驟
- 請參閱「外部應用程式負載平衡器總覽」。