每個 Cloud CDN 要求都會記錄在 Cloud Logging 中。如要瞭解如何啟用及停用記錄功能,請參閱「外部應用程式負載平衡器和 Cloud CDN 記錄與監控總覽」。
Cloud CDN 的記錄檔會與 Cloud CDN 後端所連結的外部應用程式負載平衡器相關聯。系統會依序按照轉送規則和網址對應為 Cloud CDN 記錄建立索引。
如要查看 Cloud CDN 記錄,請按照下列步驟操作。
主控台
- 前往 Google Cloud 控制台的「Logs Explorer」頁面。
- 在「資源」選單中,選取「Cloud HTTP 負載平衡器」。
- 請按照下列步驟查看記錄:
- 查看所有記錄:選取「資源」選單,然後選取「所有轉送規則」。
- 查看轉送規則的記錄:從轉送規則清單中選取轉送規則名稱。
- 查看轉送規則所用網址對應的記錄:選取轉送規則,然後選取網址對應。
要求由後端提供服務
如要確認要求是由啟用 Cloud CDN 的後端提供服務,請查看下列三個主要欄位:
httpRequest
:要求從後端提供服務時,您會看到快取已填入,並可確認要求網址。cacheFillBytes:
NUMBER_OF_BYTEScacheLookup: True
requestURL
:URL
jsonPayload
:從statusDetails
欄位,您可以確認後端是否提供回應。statusDetails: "response_sent_by_backend"
從快取提供要求
下列記錄項目顯示快取命中。
{ insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } httpRequest: { requestMethod: "GET" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" requestSize: "577" status: 304 responseSize: "157" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" remoteIp: "CLIENT_IP_ADDRESS" cacheHit: true cacheLookup: true } resource: { type: "http_load_balancer" labels: { zone: "global" url_map_name: "URL_MAP_NAME" forwarding_rule_name: "FORWARDING_RULE_NAME" target_proxy_name: "TARGET_PROXY_NAME" backend_service_name: "" project_id: "PROJECT_ID" } } timestamp: "2020-06-08T23:41:30.078651Z" severity: "INFO" logName: "projects/PROJECT_ID/logs/requests" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" receiveTimestamp: "2020-06-08T23:41:30.588272510Z" spanId: "7b6537d3672e08e1" }
記錄內容
除了多數記錄檔包含的一般資訊 (如嚴重性、專案 ID、專案編號和時間戳記),外部應用程式負載平衡器和 Cloud CDN 記錄檔還包含下列資訊:
HttpRequest 記錄欄位,可擷取 HTTP 狀態碼、傳回的位元組,以及是否執行快取查閱或快取填入作業。
jsonPayload.cacheId
欄位,指出提供快取回應的位置和快取執行個體。舉例來說,從阿姆斯特丹的快取提供的快取回應,其 cacheId 值為AMS-85e2bd4b
,其中AMS
是 IATA 代碼,而85e2bd4b
是快取例項的不透明 ID (因為部分 Cloud CDN 位置有多個不連續的快取)。jsonPayload
的statusDetails
和cacheDetail
欄位。
您可以根據下列欄位進行篩選,判斷 Cloud CDN 服務要求的快取命中、未命中或重新驗證狀態:
快取命中
jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")
或
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer!=true
向原始伺服器驗證在快取中找到所需資料
jsonPayload.statusDetails="response_from_cache_validated"
或
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer=true
快取未命中
jsonPayload.statusDetails="response_sent_by_backend"
或
httpRequest.cacheHit!=true
httpRequest.cacheLookup=true
或者,您也可以透過使用 cdn_cache_status
設定自訂回應標頭,從用戶端觀察快取狀態。
「布林」類型的記錄欄位通常只會在欄位的值為 true
時才會顯示。如果布林欄位的值為 false
,則記錄檔會省略該欄位。
系統會對這些欄位強制採用 UTF-8 編碼。非 UTF-8 字元都會替換為問號。
當 Cloud CDN 透過發出驗證要求或位元組範圍要求,來處理用戶端要求時,系統會從用戶端要求的 Cloud Logging 記錄項目中省略 serverIp
欄位。這是因為 Cloud CDN 可以傳送要求至多個伺服器 IP 位址,以回應單一用戶端要求。
Cloud CDN 發出的每項要求都會建立 Cloud Logging 記錄項目。產生的記錄項目包含 jsonPayload
內的 parentInsertId
欄位。您可以使用這個欄位,找出單一用戶端要求的記錄項目 insertId
,該要求會促使 Cloud CDN 發出驗證要求或位元組範圍要求。此外,記錄檔項目會將 Cloud CDN 識別為使用者代理程式。
監控 Cloud CDN
Cloud CDN 會將監控資料匯出至 Cloud Monitoring。 監控功能可用於監控 Cloud CDN 部署作業的健康狀態。
Cloud Monitoring 提供預先定義的資訊主頁,預設為啟用狀態,可讓您快速掌握系統健康狀態和效能。Monitoring 也提供一組自訂資訊主頁。這些自訂資訊主頁的定義以 JSON 檔案的形式,儲存於 GitHub 的 monitoring-dashboard-samples 存放區。在 dashboards/networking
目錄中,有一個名為 cloud-cdn-monitoring.json
的 Cloud CDN 專屬自訂資訊主頁。按照「安裝範例資訊主頁」一文中的操作說明,將這個自訂資訊主頁上傳至 Monitoring。
預先定義的資訊主頁
Cloud Monitoring 提供 Cloud CDN 的預先定義資訊主頁。這些資訊主頁會顯示重要指標,讓您監控流量分配和快取效益,不必手動設定。
查看預先定義的資訊主頁
如要存取預先定義的資訊主頁,請按照下列步驟操作:
前往 Google Cloud 控制台的「Cloud CDN」頁面。
按一下要查看資訊主頁的來源名稱。
在「來源詳細資料」頁面上,按一下「監控」。
系統預設會顯示預先定義的資訊主頁。
資訊主頁上的指標
預先定義的資訊主頁會提供 CDN 來源的下列主要指標:
用戶端流量分配
動態地理地圖,顯示用戶端要求的來源。這張地圖會以視覺化方式呈現全球流量來源。您可以調整時間範圍篩選器,分析特定期間的流量分配模式。
核心指標
下表說明資訊主頁顯示的核心指標。
指標 說明 要求總數 Cloud CDN 處理的所有 HTTP/HTTPS 要求總數,無論是從快取或來源後端服務提供服務。圖表會顯示一段時間內的要求數量。 快取輸出 從 Cloud CDN 邊緣快取放送的資料總量 (以位元組為單位)。長條圖會顯示一段時間內的輸出量。 總錯誤率 所有要求中,產生錯誤狀態碼 4xx
或5xx
的要求百分比。這項指標是服務整體健康狀態的主要指標。4xx 錯誤率 產生用戶端狀態碼的要求百分比。這些是 4xx 代碼,例如 404 Not Found
或403 Forbidden
。這類錯誤表示要求的內容或用戶端權限有問題。5xx 錯誤率 導致伺服器端狀態碼的要求百分比。這些是 5xx 代碼,例如 502 Bad Gateway
或503 Service Unavailable
。這類錯誤表示後端來源服務或負載平衡器設定有問題。快取命中率 直接從 Cloud CDN 快取放送的要求與要求總數的比率 (以百分比表示)。 快取填補總量 從原始後端擷取並儲存在 Cloud CDN 快取中的資料總量 (以位元組為單位)。
自訂資訊主頁
您可以透過 Monitoring 建立自訂資訊主頁。資訊主頁可使用外部應用程式負載平衡器的任何監控指標。以下是一些 PromQL 片段範例,您可以將這些片段貼到自訂 Monitoring 資訊主頁。
依快取結果細分的要求位元組數
這項查詢著重於已啟用 Cloud CDN 的後端,因此會納入 cache_result!="DISABLED"
。
sum by (cache_result) ( rate({"loadbalancing.googleapis.com/https/response_bytes_count", monitored_resource="https_lb_rule", cache_result!="DISABLED"}[1m]) )
特定後端目標的用戶端往返 TCP 延遲時間 (第 95 個百分位數)
這項查詢包含 backend_target_name="example-backend"
,可將流量縮減至後端 example-backend
。後端可以是 Cloud Storage 值區、Compute Engine VM 群組或外部後端。
histogram_quantile( 0.95, sum by (proxy_continent, le) ( rate({"loadbalancing.googleapis.com/https/frontend_tcp_rtt_bucket", monitored_resource="https_lb_rule", backend_target_name="example-backend" }[1m]) ) )
已啟用 Cloud CDN 的後端,依回應代碼類別細分的要求數量
這項查詢會依回應代碼類別 (2xx、3xx、4xx、5xx) 細分流量,協助區分用戶端成功、用戶端錯誤和伺服器錯誤。
sum by (response_code_class) ( count_over_time( {"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule", cache_result!="DISABLED" }[1h] ) )
依來源國家/地區細分的要求數量
這項查詢會顯示依來源國家/地區細分的流量,來源國家/地區是根據用戶端 IP 位址判斷。
sum by (client_country) ( rate({"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule"}[1m]) )
後續步驟
如要進一步瞭解記錄功能,包括如何將記錄匯出至 BigQuery、Pub/Sub 或 Cloud Storage,以及如何設定記錄指標來監控及發出快訊,請參閱 Cloud Logging 說明文件。
如要瞭解
httpRequest
記錄項目中包含的欄位,請參閱HttpRequest
。