You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于CloudWatch监控NVMe卷磁盘使用率

监控Windows EC2实例NVMe磁盘使用率的可行方案

不用RDP就能监控NVMe存储,CloudWatch确实没有默认的磁盘使用率指标,但我们可以通过以下几种AWS原生方案实现,操作起来省心又靠谱:

方法一:使用CloudWatch Agent(首推)

这是最直接的方式,CloudWatch Agent可以收集自定义系统指标,包括磁盘使用率,配置完成后就能在CloudWatch控制台直接查看数据。

步骤如下:

  1. 安装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
    
  2. 创建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磁盘的驱动器号。

  3. 启动并配置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
    
  4. 查看指标
    登录CloudWatch控制台,进入「指标」页面,找到你设置的命名空间EC2/Windows/NVMe,就能看到NVMe磁盘的使用率、剩余空间等指标了。

方法二:Systems Manager + 自定义脚本推送指标

如果不想用CloudWatch Agent,也可以写个PowerShell脚本定期收集数据,再通过AWS CLI推送到CloudWatch自定义指标:

  1. 安装AWS CLI
    通过Session Manager连接实例,执行命令安装AWS CLI v2:

    msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /qn
    
  2. 编写磁盘指标收集脚本
    创建脚本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
    
  3. 用State Manager定期执行脚本
    在Systems Manager控制台创建一个Association,选择AWS-RunPowerShellScript文档,指定脚本路径,设置执行频率(比如每5分钟一次),脚本就会自动定期推送指标到CloudWatch。

关键注意事项

  • 确保EC2实例的IAM角色具备对应权限:方法一需要CloudWatchAgentServerPolicy,方法二需要允许cloudwatch:PutMetricData的自定义策略(尽量遵循最小权限原则)。
  • 如果NVMe磁盘盘符发生变化,记得同步更新配置文件或脚本中的驱动器号。

内容的提问来源于stack exchange,提问作者mcottingham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:53:37