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

如何通过Resource Graph Explorer正确获取虚拟机CPU与RAM资源数据

修正后的Azure Resource Graph查询

原查询存在两个核心问题:

  1. 正则提取CPU逻辑错误:原正则表达式匹配规则不符合Azure VM规格的命名格式,导致无法正确提取CPU核心数。
  2. RAM数据获取错误:误将OS磁盘大小当作VM内存,VM的实际内存是其规格对应的固定值,与磁盘容量无关。

推荐修正方案(关联VM规格资源获取准确数据)

这种方式通过关联microsoft.compute/virtualmachinesizes资源,直接获取对应VM规格的官方CPU和内存数据,避免正则匹配的局限性,且能适配所有Azure VM规格:

resources
| where type == 'microsoft.compute/virtualmachines'
| extend VmSize = properties.hardwareProfile.vmSize
| extend Location = location
// 关联同区域的VM规格资源,提取CPU和内存数据
| join kind=leftouter (
    resources
    | where type == 'microsoft.compute/virtualmachinesizes'
    | project 
        VmSize = name, 
        Location = location, 
        Cpus = properties.numberOfCores, 
        RamGB = toreal(properties.memoryInMB) / 1024
) on VmSize, Location
| project 
    VMName = name, 
    VmSize, 
    Cpus, 
    RamGB
| where Cpus > 1

备选方案(仅用正则提取CPU,不推荐)

如果暂时无法关联VM规格资源,可修正正则表达式提取CPU(但无法获取RAM,仅作临时过渡):

resources
| where type == 'microsoft.compute/virtualmachines'
| extend VmSize = tostring(properties.hardwareProfile.vmSize)
// 修正正则:提取规格名称中的数字部分(适配大部分VM规格命名)
| extend Cpus = toint(extract(@'(\d+)', 1, VmSize))
| project 
    VMName = name, 
    VmSize, 
    Cpus
| where Cpus > 1

关键说明

  • 关联VM规格资源的方案是最优选择:Azure的VM规格会持续更新,正则匹配无法覆盖所有新规格,而关联官方资源能保证数据的准确性和时效性。
  • memoryInMB字段需要转换为GB:VM规格资源中内存以MB为单位,除以1024得到GB值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:45:07