今天來聊聊可以透過哪些指標來看 CloudFront 的情況,一般來說可以分為: 'CloudWatch Metrics', 'Console Reports' 以及 'Logs',其中 Log 的分析,要請各位讀者稍等,今天將著重講前兩者。
CloudFront 因為全球有不少節點(400+ in 2022),所以除了 'Lambda@edge' 的資訊外,相關的 Metrics 都在 'us-east-1(North Virginia)'。所以,如果檢視相關 Metrics,要記得先切換區域,不然可能找不到啥資料。
概念上,CloudFront 本體以下幾大類 Metrics:
Distribution 本體: 14 種 (default*6 + additional metrics*8)
Default 6 種
- Requests: 收到的請求數
- Bytes downloaded: 回傳給 Client 端的Bytes
- Bytes uploaded: 透過 POST/PUT 請求時上傳到 Origin 的Bytes
- 4xx error rate: 4xx 錯誤率(0~100%)
- 5xx error rate: 5xx 錯誤率(0~100%)
- Total error rate: 加總錯誤率
- Cache hit rate: 可以緩存的請求中,被緩存的比例(扣除 PUT/POST 以及 Error 結果等)
- Origin latency: 當成 TTFB 看。
- Error rate by status code(6種 status): 將部分錯誤代碼拆分出來的個別統計,ex: 401, 403, 404, 502, 503, 以及 504.
Lambda@edge: 4 種
- 5xx error rate for Lambda@Edge: 5xx rate(0~100)
- Lambda execution errors
- Lambda invalid responses: Lambda@edge 被成功執行
- Lambda throttles: 被 Throttle 的次數
- Invocations(FunctionInvoccations): 對應的 CloudFront Function 被呼叫的次數
- Validation errors(FunctionValidationErrors) – CloudFront Function 被成功執行,但產出不被 CF 接受的內容的次數(ex: 產出了不合法的 html response)
- Execution errors(FunctionExecutionErrors): CloudFront Function 在特定時間內無法完整正確執行的次數。
- Compute utilization (FunctionComputeUtilization) – CPU 佔用時間比例(0~100)。CloudFront Function是一個輕薄短小的程式,透過這個指標可以觀察是不是真的很快就完成執行。
- Throttles (FunctionThrottles) – 被 thottle 的次數
那麼,有哪些是推薦觀察哪些 CloudWatch Metrics來瞭解自己 CF 的運作嗎? 為什麼?
IMHO,第一個要看的就是 Request + Total Error Rate。一個使用人數夠多的網站在運作一段時間後,請求數量的變化會有趨勢(ex: 每天晚上 19:00~01:00 左右人增加,過了 01:00 ~ 07:00 前逐步下降,因為大家去睡覺了),只要突然間看到 Request 大幅下降 或者 total error rate 大幅提昇,很可能就是網站出問題了。
如果行有餘力,可以看 Additional metrics 中針對特定錯誤的 metrics(ex: 403, 404, 502, 504等。),以及 CacheHitRate,了解目前 CDN 成功提供緩存檔案的比例。
另一個常可以拿來瞭解 CloudFront 的使用情況的,是在 Console 左邊可以找到的 Console Report
是 CloudFront 提供的一種報表系統,可以針對過去 60 天內的資料作呈現(可細分為天 or 小時; 並可以一次看全部或特定的 Distribution),其中包含以下幾個大類
Cache statistics: 對請求的統計
- Total requests: 請求數
- Percentage of viewer requests by result type: Hit/Miss/Error的比例
- Bytes transferred to viewers: 傳至 Client 的 data 量
- HTTP status codes: 各種 status code(ex: 2xx, 3xx, 4xx, 5xx)的比例。
Popular objects: 60天內的特定時間的特定 Distribution 裡的 最受歡迎檔案的統計,可以依照列出的參數作排序。ex: 請求次數,HIT次數,Hit比例等。值得一提的是,這表格欄位很多,建議也可以特別花點心力注意 3xx 的欄位。
看到這句你可能就賺到了: 為什麼要關心 3xx 次數? 因為 3xx 代表 Client 已經有內容,卻還是來請求,如果這不是必要的,代表會多花 $$ 支付 '請求'
Top referrers
看看哪些(~~乾爹~~)網站會導流到你的網站。
Usage: 進一步以 distribution 列出相關統計數字,包含
Number of requests: 請求數
Data transferred by protocol and data transferred by destination: HTTP/HTTPS 各佔多少 以及 CloudFront 傳給 Viewer(Client) & Origin 各是多少的量。
Viewers: 你的 Client 端的資訊,包含以下面向
Devices: 從哪種裝置(平板/手機(Mobile)/Desktop/TV ..) 來的
Browsers: 從哪種瀏覽器來的
Operating systems: 對應的作業系統
Locations: 來自哪個地理位置
也就是說,使用 Console Report 可以讓你有「初步」的瞭解。
Okay, 如果可以,打開自己的 CloudFront Console 一起看看,也許會有些有趣的發現 :D