使用 Amazon CloudWatch 的記錄與監控

在 AWS 上部署應用程式

Dunieski Otano

Amazon Web Services Solutions Architect

是掛了嗎?

  • 客戶回報 App 掛了
  • 你沒有資料可證實或否認
  • CloudWatch 讓猜測變成答案

監控儀表板上有問號,不確定服務是健康還是中斷

在 AWS 上部署應用程式

Logging、Monitoring 與 Observability

三欄圖:區分 logging 為不可變的事件紀錄、monitoring 為指標閾值與警報、observability 為關聯資料回答新問題

  • Logging:按事件發生即時記錄
  • Monitoring:以閾值追蹤既知指標
  • Observability:對資料提出新問題
  • 三者缺一不可,才能有把握地營運
在 AWS 上部署應用程式

Log group、log stream 與保留期

  • Log group:相關記錄的命名容器
  • Log stream:單一來源的序列
  • Retention:保留記錄多久
  • 記錄會產生成本;請刻意設定保留期

CloudWatch Logs 階層:log group 內含多個 log stream;各 stream 為時間序事件,並有保留期設定與成本註記

在 AWS 上部署應用程式

指標與自訂指標

  • Metrics:時間序列的數值資料
  • AWS 會自動發布許多服務指標
  • Custom metrics:你的 App 輸出的數值
  • 維度可依屬性切分指標

CloudWatch 指標:左側為自動發布的 AWS 服務指標,右側為含維度的自訂指標,並有含閾值警報線的時間序圖

在 AWS 上部署應用程式

內嵌指標格式(EMF)

單一結構化記錄行同時帶有你的指標值,以及 _aws 區塊,告訴 CloudWatch 哪些欄位是指標:

{
  "_aws": {
    "CloudWatchMetrics": [
      {
        "Namespace": "OrdersApp",
        "Dimensions": [["customerTier"]],
        "Metrics": [{ "Name": "OrderLatencyMs", "Unit": "Milliseconds" }]
      }
    ]
  },
  "customerTier": "premium",
  "OrderLatencyMs": 142
}
在 AWS 上部署應用程式

儀表板與警報

左側為 CloudWatch 儀表板元件面板,右側為警報狀態機(OK、ALARM、INSUFFICIENT_DATA),並透過 SNS 路由到電子郵件與自動化

  • Dashboard:單一畫面的圖表與元件
  • Alarm:當指標越過閾值即觸發
  • 警報會路由至 SNS,再寄送 email、SMS 或觸發自動化
  • 針對使用者感受到的症狀設警報,而非每個指標
在 AWS 上部署應用程式

結構化記錄策略

  • JSON 記錄,別用純文字
  • 包含 timestamp、level、request ID、user ID
  • 結構化欄位可篩選與查詢
  • 各服務一致性可促成關聯分析

結構化 JSON 記錄行,含 timestamp、level、requestId、userId 欄位;Logs Insights 查詢示範命名欄位如何精準篩選與彙總

在 AWS 上部署應用程式

一起來練習吧!

在 AWS 上部署應用程式

Preparing Video For Download...