Study Notes - CloudWatch Core Functions


CloudWatch 是學習 AWS 之後,除了 EC2、S3 之外,最重要的 Services 之一,本文整理 CloudWatch 主要的功能介紹。


核心功能

Log Shipper / Ingest

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 or shutting-down
      • 驅動一個 Lambda,通知 ooxx
      • 同時 Reboot 自己
    • 有東西放到 S3 就去跑 Lambda …
    • 支援東西很多,像是 EC2, EC2 SSM, ECS, EMR, Auto Scaling, API Call, CodeDeploy, KMS … 等等

在做系統監控的時候,常常需要知道現在的系統狀況,但是身邊也不見得隨時都會有電腦,因為這樣的需求所以我設計了 CloudWatch Reporter,透過 CloudWatch Event Rule ,定期把資訊丟到 Slack,讓大家隨時可以掌握系統狀況。

實作很簡單,就是寫一個 Lambda Function 撈 CloudWatch 時間範圍的資料,做簡單計算,組 Slack Payload,丟 Slack。

CloudWatch 相關的服務

CloudWatch 跟很多東西都有關係,以下整理一些東西:

  • Cloudtrail:可以把 Cloudtrail event 倒進去 CloudWatch Log ,透過官方提供的 CloudFormation 可以自動建立所有的 Metric Filer / Alarm,可以監控不正常的 AWS Event
  • Elasticsearch:可以直接 Log 倒入 AWS ES,但我不太喜歡養機器 … 即使 AWS ES 宣稱是 Managed …
  • Lambda:串接 CloudWatch Rules,最常用的組合,配合 Slack 口味不錯。
  • SNS:同上
  • VPC Flow Log:用來分析網路流量,參閱 Migrate to AWS NAT GatewayLambda 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 分析:

延伸閱讀

系列文章

更新紀錄


Comments