每個 Cloud CDN 要求都會記錄在 Cloud Logging 中。如要瞭解如何啟用及停用記錄功能,請參閱「外部應用程式負載平衡器和 Cloud CDN 記錄與監控總覽」。
Cloud CDN 的記錄會與 Cloud CDN 後端連結的外部應用程式負載平衡器相關聯。系統會依序按照轉送規則和網址對應為 Cloud CDN 記錄建立索引。
如要查看 Cloud CDN 記錄,請按照下列步驟操作。
主控台
- 前往 Google Cloud 控制台的「Logs Explorer」頁面。
- 在「Resource」選單中,選取「Cloud HTTP Load Balancer」。
- 查看記錄檔的方式如下:
- 查看所有記錄:選取「Resource」選單,然後選取「All forwarding rules」。
- 查看轉送規則的記錄:從轉送規則清單中選取轉送規則名稱。
- 查看轉送規則所用網址對應的記錄:選取轉送規則,然後選取網址對應。
從後端提供的要求
如要確認要求是透過已啟用 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
Cache Hit Validated With Origin Server
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
欄位。您可以使用這個欄位,找出促使 Cloud CDN 發出驗證要求或位元組範圍要求的單一用戶端要求的記錄項目 insertId
。此外,記錄項目會將 Cloud CDN 識別為使用者代理程式。
Cloud CDN 監控
Cloud CDN 會將監控資料匯出至 Cloud Monitoring。監控功能可用於監控 Cloud CDN 部署的健康狀態。
Cloud Monitoring 提供一組資訊主頁定義,以 JSON 檔案的形式儲存於 GitHub 的 monitoring-dashboard-samples 存放區中。在網路檔案中,有一個名為 cloud-cdn-monitoring.json
的 Cloud CDN 專屬資訊主頁。請按照「安裝範例資訊主頁」中的操作說明,將這個自訂資訊主頁上傳至 Monitoring。
監控 Cloud CDN 的範例查詢
您可以使用 Monitoring 建立自訂資訊主頁。資訊主頁可使用外部應用程式負載平衡器的任何監控指標。以下是一些可貼入自訂 Monitoring 資訊主頁的 MQL 片段範例。
要求位元組數 (依快取結果細分)
這項查詢會著重於已啟用 Cloud CDN 的後端,方法是加入 filter (metric.cache_result
!= 'DISABLED')
。
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/response_bytes_count' | filter (metric.cache_result != 'DISABLED') | align rate(1m) | every 1m | group_by [metric.cache_result], [value_response_bytes_count_aggregate: aggregate(value.response_bytes_count)]
用戶端來回 TCP 延遲時間為 95%,針對特定後端目標
這項查詢包含 filter (resource.backend_target_name = 'example-backend')
,可將流量縮小到後端 example-backend
。後端可以是 Cloud Storage 值區、Compute Engine VM 群組或外部後端。
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/frontend_tcp_rtt' | filter (resource.backend_target_name = 'example-backend') | group_by 1m, [value_frontend_tcp_rtt_aggregate: aggregate(value.frontend_tcp_rtt)] | every 1m | group_by [metric.proxy_continent], [value_frontend_tcp_rtt_aggregate_percentile: percentile(value_frontend_tcp_rtt_aggregate, 95)]
針對啟用 Cloud CDN 的後端,依回應代碼類別細分的要求數量
這項查詢會依回應代碼類別 (2xx、3xx、4xx、5xx) 區分流量,以便區分用戶端成功、用戶端錯誤和伺服器錯誤。
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/request_count' | filter (metric.cache_result != 'DISABLED') | group_by 1h, [row_count: row_count()] | every 1h | group_by [metric.response_code_class], [row_count_aggregate: aggregate(row_count)]
要求數量 (按發出國家/地區細分)
這項查詢會顯示流量,並依據來源國家/地區進行細分,而來源國家/地區則是根據用戶端 IP 位址判斷。
fetch https_lb_rule | metric 'loadbalancing.googleapis.com/https/request_count' | align rate(1m) | every 1m | group_by [metric.client_country], [value_request_count_aggregate: aggregate(value.request_count)]
後續步驟
如要進一步瞭解記錄功能,包括如何將記錄匯出至 BigQuery、Pub/Sub 或 Cloud Storage,以及如何設定以記錄為依據的指標來進行監控和發出快訊,請參閱 Cloud Logging 說明文件。
如要瞭解
httpRequest
記錄項目中包含的欄位,請參閱HttpRequest
。