AWS - CloudWatch Metric Custom Metric/EMF/Cross Account Dashboard


CloudWatch Custom Metric

CloudWatch 是 AWS 上的監控服務,預設上 CloudWatch 僅提供

  • CPUUtilization
  • NetworkIn / Out
  • Latency(部分服務)

但你可能要監控

  • 訂單數量
  • 登入失敗次數
  • Queue 堵塞量
  • API 業務 KPI

→ 這些都要用 Custom Metric


傳送指標到 CloudWatch 方式

AWS CLI

1
2
3
4
5
aws cloudwatch put-metric-data \
--namespace "MyApp" \
--metric-name Orders \
--value 10

Application 用 AWS SDK


成本

  • 前 10,000 個 Custom Metrics 每月免費
  • 超過就開始計費

EMF(Embedded Metric Format)

EMF = 把「Metric 直接寫進 Log」,CloudWatch 自動轉成 Metric


EMF VS Custom Metric

項目Custom MetricEMF
傳送方式API / CLI✅ 寫 Log
成本會收 Metric 錢✅ 只收 Log 錢
適合系統監控✅ 高頻業務指標
Lambda 最常用✅ 超常用

EMF Example

1
2
3
4
5
6
7
8
9
10
{
"_aws": {
"CloudWatchMetrics": [{
"Namespace": "MyApp",
"Metrics": [{ "Name": "Orders", "Unit": "Count" }]
}]
},
"Orders": 5
}


什麼時候要用 EMF

  • 高頻率
  • Lambda
  • 不想為每個指標付 Metric 錢
  • 想從 Log 自動產生監控圖表

關鍵字

  • 高頻業務監控、省成本 -> EMF
  • 指標由 Log 自動產生 -> EMF

Cross Account CloudWatch Dashboard

Cross-Account Dashboard = 一個帳號看「多個 AWS 帳號」的 CloudWatch 指標


為什麼需要

企業常見架構

  • Dev 帳號
  • Prod 帳號
  • Security 帳號

但高層要 一個畫面看全部系統健康度
→ 這時就要 Cross-Account Dashboard


如何實作

  • 子帳號(Source Account)
    • 建立 IAM Role
    • 開放 cloudwatch:Read
  • 主控帳號(Monitoring Account)
    • Assume 子帳號 Role
    • 建立 Dashboard
    • 指標來源指定為「其他帳號」