CloudWatch 簡介
Amazon CloudWatch 是 AWS 提供的監控和可觀測性服務,讓您能夠收集和追蹤指標、收集和監控日誌檔案,以及設定告警。CloudWatch 可以監控 AWS 資源(如 EC2 執行個體、DynamoDB 資料表和 RDS 資料庫執行個體),也可以監控您應用程式和服務產生的自訂指標。
主要功能
- 指標收集:自動收集 AWS 服務的指標資料
- 日誌管理:集中儲存和分析日誌資料
- 告警機制:根據閾值觸發通知或自動化動作
- 儀表板:視覺化呈現監控資料
- 事件規則:回應系統狀態變化
指標與日誌
指標(Metrics)
CloudWatch 指標是代表一組按時間排序的資料點。您可以將其視為要監控的變數,而資料點則代表該變數隨時間的值。
| |
常用 EC2 指標
| 指標名稱 | 說明 |
|---|---|
| CPUUtilization | CPU 使用率百分比 |
| NetworkIn | 接收的網路流量(位元組) |
| NetworkOut | 傳送的網路流量(位元組) |
| DiskReadOps | 磁碟讀取操作次數 |
| DiskWriteOps | 磁碟寫入操作次數 |
| StatusCheckFailed | 狀態檢查失敗次數 |
日誌(Logs)
CloudWatch Logs 可讓您集中管理來自所有系統、應用程式和 AWS 服務的日誌。
| |
安裝 CloudWatch Agent
若要收集自訂指標和系統層級的日誌,需要安裝 CloudWatch Agent:
| |
建立告警
CloudWatch 告警可在指標超過您定義的閾值時執行動作。告警可以發送通知到 SNS 主題、執行 Auto Scaling 動作,或觸發 Lambda 函數。
告警狀態
- OK:指標在定義的閾值內
- ALARM:指標超出定義的閾值
- INSUFFICIENT_DATA:資料不足以判斷狀態
建立 CPU 使用率告警
| |
建立複合告警
複合告警可以結合多個告警的狀態:
| |
儀表板設定
CloudWatch 儀表板提供可自訂的首頁,讓您在單一檢視中監控資源。
使用 AWS CLI 建立儀表板
| |
儀表板 Widget 類型
| Widget 類型 | 說明 |
|---|---|
| metric | 顯示指標資料的圖表 |
| text | 顯示 Markdown 格式的文字 |
| log | 顯示日誌查詢結果 |
| alarm | 顯示告警狀態 |
| explorer | 動態探索資源指標 |
與其他服務整合
與 SNS 整合
透過 SNS 發送告警通知到多個端點:
| |
與 Lambda 整合
使用 Lambda 執行自動化回應:
| |
與 Auto Scaling 整合
根據 CloudWatch 指標自動調整資源:
| |
與 EventBridge 整合
使用 EventBridge 規則回應 CloudWatch 事件:
| |
最佳實踐
- 設定適當的告警閾值:避免過於敏感導致告警疲勞
- 使用維度過濾:針對特定資源設定監控
- 建立分層儀表板:概覽層級和詳細層級的儀表板
- 設定日誌保留政策:平衡成本和合規需求
- 使用 Metric Math:組合多個指標進行進階分析
- 啟用跨帳戶監控:集中管理多帳戶環境
結論
AWS CloudWatch 是建構可靠雲端應用程式的關鍵服務。透過適當的監控策略、告警設定和自動化回應,您可以確保應用程式的高可用性和效能。建議從基本的指標監控開始,逐步擴展到日誌分析和自動化運維。