每個 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 提供一組資訊主頁定義,以 JSON 檔案的形式儲存於 GitHub 的 monitoring-dashboard-samples 存放區。在 dashboards/networking
目錄中,有一個名為 cloud-cdn-monitoring.json
的 Cloud CDN 專屬資訊主頁。按照「安裝範例資訊主頁」一文中的說明,將這個自訂資訊主頁上傳至 Monitoring。
監控 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
。