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

如何监控AWS实例的所有CPU核心使用率(含单核最值/均值)

获取AWS 8核EC2实例单CPU核心使用率的解决方案

方案1:通过CloudWatch自定义指标持久化收集单核心数据

AWS默认CloudWatch的CPU使用率是实例层面的平均值,要获取单核心数据,需借助CloudWatch Agent采集自定义指标:

  1. 在EC2实例上安装CloudWatch Agent(Amazon Linux或Ubuntu可通过包管理器直接安装)
  2. 创建自定义配置文件(如/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json),配置采集/proc/stat中的CPU核心数据,核心是通过维度区分不同CPU核心,示例配置片段:
    {
      "metrics": {
        "metrics_collected": {
          "procstat": [
            {
              "measurement": ["cpu_usage"],
              "metrics_collection_interval": 60,
              "dimensions": [{"Name": "CoreId", "Value": "${core_id}"}]
            }
          ]
        }
      }
    }
    
    (需配合脚本解析/proc/stat的单核心数据,将核心ID映射到CoreId维度)
  3. 启动CloudWatch Agent后,在CloudWatch控制台的自定义命名空间下,找到带CoreId维度的CPU使用率指标,即可查看每个核心的实时数据,通过CloudWatch的统计功能(Max、Average)获取指定时间范围内的最大和平均使用率。

方案2:实例内直接采集(临时/实时需求)

如果只是临时查看或统计,可使用Linux系统自带工具:

  • 实时查看所有核心使用率:执行mpstat -P ALL 5 10,其中5是采样间隔(秒),10是采样次数,输出会列出每个核心的%usr、%sys等使用率数据
  • 统计最大/平均使用率:编写简单bash脚本批量处理采样数据,示例:
    mpstat -P ALL 1 60 | grep -v 'all' | awk '{
        core[$2]++;
        sum[$2] += $3 + $4;
        if (($3 + $4) > max[$2]) max[$2] = $3 + $4
    }
    END {
        for (c in core) {
            print "核心" c ": 平均使用率=" sum[c]/core[c] "%, 最大使用率=" max[c] "%"
        }
    }'
    
    该脚本每秒采样1次,共采样60次,计算每个核心的平均和最大CPU使用率(用户态+系统态)

方案3:通过Systems Manager批量执行脚本(多实例场景)

如果有多台同配置实例需要采集,可使用AWS Systems Manager的Run Command功能:

  1. 创建包含上述采样脚本的文档
  2. 选择目标实例执行脚本,执行结果会返回每个实例的单核心使用率统计数据,无需登录实例即可批量获取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:24:27