Cloudwatch + Alarm with EC2 CPU Utilization 測試小記
OS: Container with openSUSE Leap 15
EC2: openSUSE Leap 15.1 in AWS
今天來測試 Cloudwatch 目標是 EC2 instance 如果 CPU 使用率 超過 50% 達到一定的條件, 就送出警告
首先先建立 openSUSE Leap
==== 在主機上面 ====
啟動 container
> docker run -v ~/.aws:/root/.aws -v ~/.azure:/root/.azure -v ~/.config/gcloud:/root/.config/gcloud -v ~/.ssh:/root/.ssh -it sakana/ansible_opensuse15 /bin/bash
- 這邊我有透過 -v 把本機上面的三個平台的設定檔掛載到容器內, 還有 .ssh 目錄 也掛載上面, 因為 google 的 SSH 金鑰 也會存放在裡面
==== 在 container 內 ====
參考之前的文章建立 openSUSE Leap 15.1 的 EC2 instance
查詢 openSUSE Leap 15.1 的 Image id
# aws ec2 describe-images --filters 'Name=name,Values=openSUSE*'
查詢 Subnet id
# aws ec2 describe-subnets
security-group-ids 查詢方式
# aws ec2 describe-security-groups
查詢 Key Pair
# aws ec2 describe-key-pairs
啟動 openSUSE Leap 15.1 instance
# aws ec2 run-instances --image-id ami-036afe8f05ebda1fe --subnet-id subnet-92dfe4fb --security-group-ids sg-090a6648734644255 --instance-type t2.micro --key-name test-key --count 1
==== 在主機上面 ====
使用 ssh -i test-key.pem -l ec2-user SERVER_IP
看看是否可以登入
完成建立 EC2 instance
接下來設定 Cloudwatch
想法上就是 EC2 的 CPU 用量超過一定的條件就通知
登入 AWS Console
點選 服務 -- > Cloudwatch
點選 指標 -- > 點選 EC2
點選 每個執行個體指標
勾選要監控的 Instance 還有指定指標名稱為 CPUUtilization
點選 圖表化指標
點選 建立警示圖案 ( 鬧鈴 )
建立警示
時間的部分我使用預設值, 因為 5 分鐘是不用收費的, 可以參考 Cloudwatch 定價
設定 CPU 使用率 大於 50 %
3 次取樣有 2 次符合就警告
點選 下一步
通知的部分會結合 SNS 服務, 一定範圍內都是免費
點選 建立新主題 輸入要通知的電子郵件
點選 建立主題
點選 下一步
輸入 名稱
點選 下一步
在預覽畫面
點選 建立警示
完成 建立警示
可以觀察 Cloudwatch
如果要收到通知信, 就要去收 AWS SNS 寄來的信件, 並點選信內連結確認訂閱
最後來測試是否有作用
使用 ssh -i test-key.pem -l ec2-user SERVER_IP
登入 openSUSE Leap 15.1 instance in AWS
測試工具
- stress-ng
切換為 root
> sudo su -
使用 zypper 安裝 stress-ng
# zypper install -y stress-ng
使用 stress-ng 指令 壓測 CPU
# stress-ng -c 2 --cpu-method all
stress-ng: info: [2920] defaulting to a 86400 second (1 day, 0.00 secs) run per stressor
stress-ng: info: [2920] dispatching hogs: 2 cpu
在 Cloudwatch 上面觀察
靜待 10 mins ( 3 x 5分鐘, 裡面要有 2 個符合 CPU > 50 % )
達到條件就會變成警示中
檢查訂閱的電子郵件
確認收到通知 :)
完成 Lab
~ enjoy it
Reference: