基于CloudWatch监控NVMe卷磁盘使用率
不用RDP就能监控NVMe存储,CloudWatch确实没有默认的磁盘使用率指标,但我们可以通过以下几种AWS原生方案实现,操作起来省心又靠谱:
方法一:使用CloudWatch Agent(首推)
这是最直接的方式,CloudWatch Agent可以收集自定义系统指标,包括磁盘使用率,配置完成后就能在CloudWatch控制台直接查看数据。
步骤如下:
安装CloudWatch Agent
通过Systems Manager的Session Manager(不用RDP)连接实例,执行PowerShell命令下载并安装Agent:# 先创建临时目录(如果不存在) New-Item -Path "C:\Temp" -ItemType Directory -ErrorAction SilentlyContinue # 下载安装包 Invoke-WebRequest -Uri https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi -OutFile "C:\Temp\amazon-cloudwatch-agent.msi" # 静默安装 Start-Process msiexec.exe -ArgumentList "/i C:\Temp\amazon-cloudwatch-agent.msi /qn" -Wait创建Agent配置文件
新建JSON配置文件C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json,指定要收集的NVMe磁盘指标。假设你的NVMe盘符是D:,配置内容示例:{ "metrics": { "namespace": "EC2/Windows/NVMe", "metrics_collected": { "disk": { "measurement": [ "% Used Space", "Free Space" ], "metrics_collection_interval": 60, "resources": [ "D:" ] } } } }不确定盘符的话,可执行
Get-Volume命令查看NVMe磁盘的驱动器号。启动并配置Agent服务
执行PowerShell命令加载配置并启动服务:& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json" -s查看指标
登录CloudWatch控制台,进入「指标」页面,找到你设置的命名空间EC2/Windows/NVMe,就能看到NVMe磁盘的使用率、剩余空间等指标了。
方法二:Systems Manager + 自定义脚本推送指标
如果不想用CloudWatch Agent,也可以写个PowerShell脚本定期收集数据,再通过AWS CLI推送到CloudWatch自定义指标:
安装AWS CLI
通过Session Manager连接实例,执行命令安装AWS CLI v2:msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /qn编写磁盘指标收集脚本
创建脚本C:\Scripts\Send-NVMe-Metrics.ps1:# 获取NVMe磁盘使用率(假设盘符为D:) $diskUsage = Get-Volume -DriveLetter D | Select-Object @{ Name='UsedPercent'; Expression={[math]::Round((($_.Size - $_.SizeRemaining)/$_.Size)*100,2)} } # 推送到CloudWatch aws cloudwatch put-metric-data ` --namespace "EC2/Windows/NVMe" ` --metric-name "DiskUsedPercent" ` --value $diskUsage.UsedPercent ` --dimensions InstanceId=$env:EC2_INSTANCE_ID ` --unit Percent用State Manager定期执行脚本
在Systems Manager控制台创建一个Association,选择AWS-RunPowerShellScript文档,指定脚本路径,设置执行频率(比如每5分钟一次),脚本就会自动定期推送指标到CloudWatch。
关键注意事项
- 确保EC2实例的IAM角色具备对应权限:方法一需要
CloudWatchAgentServerPolicy,方法二需要允许cloudwatch:PutMetricData的自定义策略(尽量遵循最小权限原则)。 - 如果NVMe磁盘盘符发生变化,记得同步更新配置文件或脚本中的驱动器号。
内容的提问来源于stack exchange,提问作者mcottingham

