Study Notes - CloudWatch Core Functions
CloudWatch 是學習 AWS 之後,除了 EC2、S3 之外,最重要的 Services 之一,本文整理 CloudWatch 主要的功能介紹。
核心功能
Log Shipper / Ingest
- CloudWatch Agent (取代 awslogs): 新一代的 Log Ingest Agent,以 golang 重寫,整合 SSM,同時支援 Linux & Windows。詳細使用,參閱 Study Notes - CloudWatch Agent for Linux
- awslogs (python): 參閱 Study Notes - CloudWatch awslogs
CloudWatch Logs
CloudWatch 除了自身提供的 Metric / Alarm ,也可以把自己 Application 的 Log 丟上來、儲存,然後設定 Filter 進行分析,變成 Metric,最後用 Alarm + Rule 驅動事件。
CloudWatch Metrics
詳細參閱: Study Notes - CloudWatch Metrics
CloudWatch Logs Insights
2018/11/27 AWS re:Invent 發表。
透過查詢語言,聚合複雜的查詢內容。
— 待整理 —
詳細參閱:New – Amazon CloudWatch Logs Insights – Fast, Interactive Log Analytics
CloudWatch Dashboard
- 自行定義 Dashboard,也就是把很多圖放在同一個畫面,版面配置可以自行調整大小。
- 資訊是即時的 (1-2 分鐘的時間差)
- 並且自動更新。同時可以設定時間範圍
- 支援 Local Time。
- 支援 export / import as JSON,也可以程式化、版控、分享 Dashboard 的設定。2017/07/05: New – API & CloudFormation Support for Amazon CloudWatch Dashboards
非常實用的功能!
缺點:
- 圖形支援的還不夠多
成本:一個 Dashboard 每個月三塊美金。
Metric Math
多個 Metric 可以用數學函示即時計算出另一個 Metric。詳細參閱:
— 待整理 —
CloudWatch Alarms
使用 AWS 剛開始都會用到的,主要目的:
- 就針對特定的監控指標
- 設定告警的條件
- 通知或者說驅動一個事件
最常見的例子:
- 設定監控指標:CPU Utilization
- 告警條件:五分鐘之內,持續 2 次,平均值超過 80%
- 發動 SNS 事件
- 發 Email 給一個群組
- 送簡訊 (SMS) 給 1-n 個人
- 執行 1-N 個 Lambda
這是非常經典的例子。
使用 Alarms 要知道幾個重要的觀念,包含 Namespaces
, Metric Name
, Statistics
, Unit
, Period
… 後面 Metric 詳細描述。
其他功能
CloudWatch Events / Rules
主要用來事件驅動 (Event Driven) 的原點,像是 CloudWatch Alarms 發生時,驅動 Lambda 做一件事情。也可以利用固定的排程 (crontab) 做固定的事情,像是每天固定幾點做什麼事情,或者固定每 10 分鐘做一件事情。這樣事件驅動叫做 CloudWatch Event
,觸發的每個規則稱為 CloudWatch Rule
。
這些都可以透過 CLI or SDK 做設定,所以很容易開發。
事件驅動了來源有很多地方,CloudWatch Rule 基本的就有:
- Schedule: Cron 的方式,或者是固定的時間驅動
- CloudWatch Events: 配合 AWS Service 的 Action,像是:
- 當某些重要的 EC2 狀態變成
stopped
orshutting-down
時- 驅動一個 Lambda,通知 ooxx
- 同時 Reboot 自己
- 有東西放到 S3 就去跑 Lambda …
- 支援東西很多,像是 EC2, EC2 SSM, ECS, EMR, Auto Scaling, API Call, CodeDeploy, KMS … 等等
- 當某些重要的 EC2 狀態變成
在做系統監控的時候,常常需要知道現在的系統狀況,但是身邊也不見得隨時都會有電腦,因為這樣的需求所以我設計了 CloudWatch Reporter
,透過 CloudWatch Event Rule ,定期把資訊丟到 Slack,讓大家隨時可以掌握系統狀況。
實作很簡單,就是寫一個 Lambda Function 撈 CloudWatch 時間範圍的資料,做簡單計算,組 Slack Payload,丟 Slack。
CloudWatch 相關的服務
CloudWatch 跟很多東西都有關係,以下整理一些東西:
Cloudtrail
:可以把 Cloudtrail event 倒進去 CloudWatch Log ,透過官方提供的 CloudFormation 可以自動建立所有的 Metric Filer / Alarm,可以監控不正常的 AWS EventElasticsearch
:可以直接 Log 倒入 AWS ES,但我不太喜歡養機器 … 即使 AWS ES 宣稱是 Managed …Lambda
:串接 CloudWatch Rules,最常用的組合,配合 Slack 口味不錯。SNS
:同上VPC Flow Log
:用來分析網路流量,參閱 Migrate to AWS NAT Gateway 和 Lambda Network Traffic Test in VPC w/ or w/o Endpoint 的分享。Kineses Firehose
: 串流 Log,讓 Log 落地到 S3 或者與其他資料分析。- Auto Scaling / SQS / SES / SWF / DynamoDB / RDS … 幾乎都會跟 CloudWatch 有關。
- 把 ELB Log 倒入 CloudWatch Log 分析:
延伸閱讀
系列文章
- Study Notes - CloudWatch
- Study Notes - CloudWatch Core Functions
- Study Notes - CloudWatch Agent for Linux
- Study Notes - CloudWatch awslogs
- Study Notes - CloudWatch Metrics
- Study Notes - CloudWatch FAQ
- Solution - CloudWatch for Monitoring and Alarm Systems
- Solution - CloudWatch for Log Analysis
- Solution - CloudWatch for Performance Testing
- 2017/06/21: 淺談系統監控與 CloudWatch 的應用 - AWS User Group Taiwan
更新紀錄
- 2018/12/25: 從 Study Notes - CloudWatch 解構