# 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 Metric EMF
傳送方式 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
    • 指標來源指定為「其他帳號」