CloudWatch 是 AWS 提空的一個監控服務,可以用來監控服務的一些系統參數,例如: CPU、Memory、流量甚至是硬碟空間。可以針對這些監控數據設定警報機制,也就是說可以設定當 CPU 達到 50% 觸發一些告警機制等。
CloudWatch 主要幾個 Component
- Dashboard
可以在上面製作各服務的監控資訊,且附加在 Dashboard 上製作屬於自己的客製化監控頁面。
2. Metric
3.Alarm
檢查 Metric 是否超過我們所設定的 Threshold, 倘若超過則依照設定的條件看是要觸發什麼機器,例如: Lambda、EC2、SNS、Auto Scale。
實戰演練:
以下範例是使用 EC2 當作範例,所以建議先開啟一個 EC2, 以利於下面的操作。
- 製作一個監控 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