如何使用 AWS CloudWatch 進行系統監控

Gary Ng
8 min readAug 24, 2024

--

CloudWatch

CloudWatch 是 AWS 提空的一個監控服務,可以用來監控服務的一些系統參數,例如: CPU、Memory、流量甚至是硬碟空間。可以針對這些監控數據設定警報機制,也就是說可以設定當 CPU 達到 50% 觸發一些告警機制等。

CloudWatch 主要幾個 Component

  1. Dashboard

可以在上面製作各服務的監控資訊,且附加在 Dashboard 上製作屬於自己的客製化監控頁面。

2. Metric

3.Alarm

檢查 Metric 是否超過我們所設定的 Threshold, 倘若超過則依照設定的條件看是要觸發什麼機器,例如: Lambda、EC2、SNS、Auto Scale。

實戰演練:

以下範例是使用 EC2 當作範例,所以建議先開啟一個 EC2, 以利於下面的操作。

  1. 製作一個監控 EC2 的圖片

1–1 點選 Create Dashboard ,然後名稱叫做 monitor-ec2

1–2 來源使用 CloudWatch 建立一個 Line Chart

1–3 輸入框輸入 EC2

1–4 我們這邊因為想監控各別的 instance , 因此則 Per-Instance Metrics

1–5 找到想要監控的 Instance 後選擇 CPU Utilization

1–6 針對 CPU Utilization 設定 Threshold

選擇 Options

1–7. 往下滑找到 Horizontal annotations/threshold

接著可以開始設定 label 的名稱,以及 threshold, 我這邊設定 threhold 為 80%, 且 threshold 以下的區塊會被填滿。

此外你也可以針對 vertical 設定 annotations 。

1–8. 都設定完後點選 Create Widget

1–9 點選 Save 儲存至 Dashboard 上

1–10 選擇自動刷新的頻率

2. 增加一個警報的 Widget 至 Dashboard

2–1. 選擇 Alarm

2–2. 勾選想要加入至 Dashboard 的 Alaram

2–3. 選擇要加入至哪個 Dashboard, 並且 Widget Type 選擇 Alarm status

2–4. Dashboard 上即可看到 metric 的狀態以及名稱

備註:

1 個 alarm status widget 至多只能容量 100 個 widget

3. 新增 Alarm 報警機制

3–1 針對 EC2 CPU Utilization 設定報警機制

這邊設定使用 CPU 每 5 分鐘的平均值

3–2 使用 Static 並且設定 CPU 超過 80 進行警報

而這邊的 3 out 5, 代表的意思是 5 個 datapoint 中有 3 個是超過 threshold 則達到觸發警報的條件。

3–3 這邊設定當觸發警報系統的時候進行發送 SNS Topic

3–4 輸入可識別的名稱

3–5. 建置完成後即可在 All alarms 看到自己所建立的警報

4. 如何啟用 anomaly detection

4–1 在 Metric 下方的 Action 點選以下 icon 即可開啟 anomaly detection

5. 根據 resource tag 或者 property 去建立 metric

5–1. 選擇 Metrics/Explorer

5–2 選擇要監測的 resouce, 以下範例選擇 EC2 Instance CPUUtiilization

6. 合併多個來源至一個圖表

6–1. 選擇 Mulit source query

6–2. 根據 InstanceId 分別顯示,且指標為 CPU Utilization

7. 將 nginx access log 推送至 cloudwatch log

7–1 按照以下步驟進行安裝

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/AgentDependencies.tar.gz -O

tar xvf AgentDependencies.tar.gz -C /tmp/

# 這邊指定 ap-northeast-1
sudo python ./awslogs-agent-setup.py --region ap-northeast-1 --dependency-path /tmp/AgentDependencies

7–2 執行安裝後會跳出一些設定的訊息,依照自己的設定即可

7–3 設定檔案位置

# 設定檔案位置
/var/awslogs/etc/awslogs.conf

# awslog cli 設定位置
/var/awslogs/etc/aws.conf

# log 位置
/var/log/awslogs.log

7–4 設定開機時啟動 awslogs

sudo chkconfig awslogs on

--

--

Gary Ng
Gary Ng

Written by Gary Ng

軟體工程師、後端工程師

No responses yet