iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Build on AWS

動漫宅的 30 天 AWS Lakehouse 修行日誌系列 第 28

Day28 監控之章-CloudWatch、CloudTrail 概念篇

  • 分享至 

  • xImage
  •  

簡介

透過 CloudWatch 與 CloudTrail 讓 AWS Service 擁有「可監控、可追蹤」的功能。

本篇將介紹:

  • 什麼是 Amazon CloudWatch
  • 什麼是 AWS CloudTrail
  • 它們在 AWS 中的角色與差異
  • 常見應用情境介紹

什麼是 Amazon CloudWatch?

Amazon CloudWatch 是 AWS 的監控與可觀測性服務(Monitoring & Observability Service),主要用於收集、分析與警示 AWS 資源的運作狀況。


🔹 CloudWatch 的主要功能

功能分類 說明
Metrics(指標) 收集服務運作指標,例如 EC2 CPU 使用率、Lambda 執行時間、Glue Job 狀態、S3 請求量等。
Logs(日誌) 儲存各服務輸出的 log,如 Lambda print()、Glue Job console log、Application Log。
Alarms(警報) 設定閾值(Threshold),當 Metric 超過門檻時自動發出通知(整合 SNS 或 Email)。
Dashboards(儀表板) 自訂視覺化監控面板,統一展示各資源運作狀況。
Events / Rules(事件規則) 可設定事件觸發規則,例如「Glue Job 失敗時觸發 Lambda」。

🔸 常見應用場景

Glue ETL 監控

  • 透過 CloudWatch Logs 監控 Glue Job 執行 log。
  • job run 狀態為 FAILED,可設立 Alarm 通知 SNS。

Lambda 監控

  • 觀察 Duration(執行時間)Error Count(錯誤次數)Throttle(併發限制)
  • 以 Alarm 設定「錯誤率 > 5%」時寄信或觸發修復 Lambda。

S3 存取與流量觀察

  • 啟用 CloudWatch Metrics for S3,可追蹤物件存取量與失敗率。
  • 適合監控上傳異常或高頻重複存取的情況。

EventBridge 排程追蹤

  • 監控排程任務是否準時執行。
  • 若出現 InvocationFailed 事件,可發送 SNS 告警。

🔸 CloudWatch 架構圖

+--------------------------+
|       CloudWatch         |
+-----------+--------------+
            |
    +-------+-------+
    |               |
 Metrics        Logs
    |               |
 Alarms          Dashboards
    |               |
SNS 通知       視覺化監控

什麼是 AWS CloudTrail?

AWS CloudTrail 是 AWS 的行為審計與安全追蹤服務(Governance, Compliance & Auditing Service)。它會記錄誰在什麼時間、從哪個位置、對哪個資源做了什麼操作。


🔹 CloudTrail 的主要功能

功能 說明
Event Logs 紀錄所有 API 呼叫,例如 StartGlueJobRun, PutObject, CreateBucket 等。
Management Events 關於 AWS 資源的建立、刪除、設定變更。
Data Events 關於 S3 物件層級操作(例如上傳、下載)。
Insights Events 自動偵測異常操作,例如突然大量刪除 Bucket。
整合 Athena 分析 可將 CloudTrail Log 匯出到 S3,並透過 Athena 查詢分析。

🔸 常見應用場景

追蹤誰刪除了 S3 檔案

  • CloudTrail Data Events 會記錄 S3 的 DeleteObject 操作。
  • 可查出具體的使用者 ARN 與來源 IP。

Glue 或 Lambda 操作審計

  • 查出是誰手動執行、修改了 Glue Job。
  • 可比對 IAM 使用者活動,確保權限被合理使用。

Lake Formation 權限異動紀錄

  • 若有使用者調整了 LF-Tag 或資料庫權限,CloudTrail 都會留下完整紀錄。

🔸 CloudTrail 架構圖

+----------------------------+
|        CloudTrail          |
+-------------+--------------+
              |
      收集 AWS API 呼叫紀錄
              |
        儲存於 S3 Bucket
              |
        查詢與分析 (Athena / Lake Formation)

CloudWatch vs CloudTrail 差異比較

📊 CloudWatch 看「服務的狀況」
🔍 CloudTrail 看「誰做了什麼事」

項目 CloudWatch CloudTrail
主要目的 系統監控、效能追蹤 安全審計、操作紀錄
資料來源 系統指標、Log API 呼叫事件
典型用途 Lambda 失敗告警、Glue Log 分析 查誰修改了 Glue Job 或 S3 Bucket
保留方式 Log Group(可設保留天數) S3 儲存(長期保存)
典型整合 SNS、Athena、QuickSight Athena、Lake Formation、SIEM

常見範例:使用 CloudWatch 監控 Glue Job 執行失敗

Step 1. 建立 CloudWatch Alarm

  1. 開啟 CloudWatch → Alarms → Create alarm
  2. 選擇 Metric:AWS/Glue → Jobs → FailedJobs
  3. 設定條件:
    • Threshold:> 0
    • Period:5 minutes
  4. 動作(Action):
    • 發送通知到 SNS Topic:glue-failure-notify

Step 2. SNS 通知設定

  • SNS 主題:glue-failure-notify
  • 訂閱者:Email → dataops@company.com

Step 3. 驗證通知流程

  • 手動觸發 Glue Job 失敗
  • 確認 CloudWatch Alarm → SNS → Email 通知是否成功

常見範例:使用 CloudTrail 查誰上傳了 S3 檔案

Step 1. 開啟 CloudTrail Data Event

  1. 進入 CloudTrail → Event history → Event type 選「Data events」
  2. 設定 Filter 條件:
    • EventName = PutObject
    • ResourceType = AWS::S3::Object

Step 2. 檢視事件詳細資訊

{
  "eventTime": "2025-10-12T03:21:15Z",
  "eventName": "PutObject",
  "userIdentity": {
    "arn": "arn:aws:iam::123456789012:user/Andy"
  },
  "requestParameters": {
    "bucketName": "anime-lake",
    "key": "Bronze/animes/animes_20251012.csv"
  },
  "sourceIPAddress": "61.222.xxx.xxx",
  "userAgent": "aws-sdk-python/1.35.20 Python/3.12.6 Linux/5.10 botocore/1.35.20"
}

Step 3. 分析結果

  • 可清楚得知「誰、什麼時候、從哪裡」上傳了 S3 檔案。
  • 透過 eventName = PutObject 可追蹤檔案上傳來源與操作使用者。
  • 若發現異常上傳(例如未知帳號或非預期 IP),可進一步調查 IAM Policy 或啟用 MFA 加強防護。

結論與建議

建議 說明
✅ 結合 CloudWatch + CloudTrail 前者負責即時監控,後者負責行為追蹤。
⚙️ Glue / Lambda 建議啟用 LogGroup 方便除錯與後續分析。
🔐 CloudTrail 請開啟 Data Event 否則 S3 物件層級行為不會被記錄。
🧠 可與 Athena 整合 CloudTrail Log 匯入 Athena 進行查詢分析。
🚨 加上 SNS 通知 建立異常告警流程,確保問題即時回報。

下篇預告

下篇我們要來介紹 「Day29 監控之章-CloudWatch、CloudTrial 實作篇」,實際建立 CloudWatch Metric 和 Alert 來加強我們整體流程的監控、警示,並透過 CloudTrial 做 User 或 Role 的操作監控。

參考資料

[1] Amazon CloudWatch Documentation
[2] AWS CloudTrail Documentation
[3] Monitoring AWS Glue
[4] Using CloudWatch metrics with Lambda
[5] Analyzing CloudTrail Logs using Athena


上一篇
Day27 視覺之章-QuickSight 實作篇
下一篇
Day29 監控之章-CloudWatch、CloudTrail 實作篇
系列文
動漫宅的 30 天 AWS Lakehouse 修行日誌30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言