2/09/2021

如何透過 Cloudwatch 觀察 EC2 狀態

Cloudwatch 本來就有內建 EC2 的不少指標。不過,有些最基本的指標,例如剩餘硬碟空間、記憶體用量卻沒有。這時候可以透過安裝 Cloudwatch agent 取得。網路上有些這樣的文章,但是做法不一且有的版本已經不適用。分享一個做法,主要步驟是來自於 AWS support 建議,加上一點個人經驗補充 :

1. 下載及安裝 CloudWatch Agent (支援 64-bit versions of Windows Server 2019, Windows Server 2016, Windows Server 2012, and Windows Server 2008 R2)

2. 建立 IAM Role 並關聯到 EC2 上

2.1 開 Role

2.2 將 Role attach 到 EC2 (step 1~4)

3. 建立 ColudWatch Configuration File:  

把檔案存放在 C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json ,內容如下:

{
"metrics": {
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"LogicalDisk": {
"measurement": [
"% Free Space",
"Free Megabytes"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"Memory": {
"measurement": [
"% Committed Bytes in Use",
"Available MBytes"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
}
}
}
}
 

這樣會每隔60秒從 Windows 效能監視器取得一次數據更新。如果想新增觀測的 Metrics 可以參考此文

4. 執行 CloudWatch Agent

開啟一個 PowerShell (需 run as administrator) ,執行底下的命令

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json"

如果有錯誤 (e.g. Windows 2012),可能需要先執行下行改 policy 再試一次

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

5. 預設收集到的資訊會放在 CWAgent 這個namespace裡面,可以登入 CloudWatch concle 來查看收集到的資訊。

  

如果沒看到,有幾個方向可以查找:

  • Windows 效能監視器是否有想看的東西了? 沒有的話可以勾起來
  
  • 勾選後需要 restart service: Amazon CloudWatch Agent (如果無法啟動,用 Admin 執行 PowerShell 並執行上面步驟 4 指令)
  • 確認 EC2 的 IAM role 有改成上面步驟 2 的 role 

0 comments:

張貼留言

來了就聊兩句吧: