透過 CloudWatch 與 CloudTrail 讓 AWS Service 擁有「可監控、可追蹤」的功能。
本篇將介紹:
Amazon CloudWatch 是 AWS 的監控與可觀測性服務(Monitoring & Observability Service),主要用於收集、分析與警示 AWS 資源的運作狀況。
功能分類 | 說明 |
---|---|
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」。 |
job run
狀態為 FAILED,可設立 Alarm 通知 SNS。InvocationFailed
事件,可發送 SNS 告警。+--------------------------+
| CloudWatch |
+-----------+--------------+
|
+-------+-------+
| |
Metrics Logs
| |
Alarms Dashboards
| |
SNS 通知 視覺化監控
AWS CloudTrail 是 AWS 的行為審計與安全追蹤服務(Governance, Compliance & Auditing Service)。它會記錄誰在什麼時間、從哪個位置、對哪個資源做了什麼操作。
功能 | 說明 |
---|---|
Event Logs | 紀錄所有 API 呼叫,例如 StartGlueJobRun , PutObject , CreateBucket 等。 |
Management Events | 關於 AWS 資源的建立、刪除、設定變更。 |
Data Events | 關於 S3 物件層級操作(例如上傳、下載)。 |
Insights Events | 自動偵測異常操作,例如突然大量刪除 Bucket。 |
整合 Athena 分析 | 可將 CloudTrail Log 匯出到 S3,並透過 Athena 查詢分析。 |
DeleteObject
操作。+----------------------------+
| CloudTrail |
+-------------+--------------+
|
收集 AWS API 呼叫紀錄
|
儲存於 S3 Bucket
|
查詢與分析 (Athena / Lake Formation)
📊 CloudWatch 看「服務的狀況」
🔍 CloudTrail 看「誰做了什麼事」
項目 | CloudWatch | CloudTrail |
---|---|---|
主要目的 | 系統監控、效能追蹤 | 安全審計、操作紀錄 |
資料來源 | 系統指標、Log | API 呼叫事件 |
典型用途 | Lambda 失敗告警、Glue Log 分析 | 查誰修改了 Glue Job 或 S3 Bucket |
保留方式 | Log Group(可設保留天數) | S3 儲存(長期保存) |
典型整合 | SNS、Athena、QuickSight | Athena、Lake Formation、SIEM |
AWS/Glue → Jobs → FailedJobs
> 0
5 minutes
glue-failure-notify
glue-failure-notify
dataops@company.com
EventName = PutObject
ResourceType = AWS::S3::Object
{
"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"
}
eventName = PutObject
可追蹤檔案上傳來源與操作使用者。建議 | 說明 |
---|---|
✅ 結合 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