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

如何用Azure Graph一次性查询所有Azure虚拟机的VM Agent状态?

解决方案

可以通过Azure Resource Graph(ARG)单次查询获取所有虚拟机的VM Agent状态,核心是显式指定提取properties.extended.instanceView.vmAgent路径下的嵌套属性,以下是可行的查询语句:

Resources
| where type == 'microsoft.compute/virtualmachines'
| project
    VMName = name,
    ResourceGroup = resourceGroup,
    VMAgent运行状态 = properties.extended.instanceView.vmAgent.statuses[0].displayStatus,
    VMAgent版本 = properties.extended.instanceView.vmAgent.vmAgentVersion,
    最后心跳时间 = properties.extended.instanceView.vmAgent.lastHeartbeatTimestamp
| order by ResourceGroup, VMName

关键说明

  • Azure Resource Graph默认不会返回深层嵌套属性,必须通过project关键字明确指定要提取的VM Agent相关字段
  • statuses[0].displayStatus对应VM Agent的核心运行状态,通常返回Ready表示Agent正常运行;若VM未启用Agent,该字段会返回null
  • 可添加| where isnotnull(VMAgent运行状态)过滤掉未启用Agent的虚拟机

关联扩展状态的进阶查询

如果需要同时查看VM Agent托管的扩展状态,验证Agent工作是否正常,可以使用关联查询:

let 虚拟机列表 = Resources
    | where type == 'microsoft.compute/virtualmachines'
    | project
        虚拟机ID = id,
        VM名称 = name,
        资源组 = resourceGroup,
        VMAgent状态 = properties.extended.instanceView.vmAgent.statuses[0].displayStatus;
let 扩展列表 = Resources
    | where type == 'microsoft.compute/virtualmachines/extensions'
    | project
        关联虚拟机ID = split(id, '/virtualMachines/')[0],
        扩展名称 = name,
        扩展状态 = properties.statuses[0].displayStatus;
虚拟机列表
| join kind=leftouter 扩展列表 on $left.虚拟机ID == $right.关联虚拟机ID
| project VM名称, 资源组, VMAgent状态, 扩展名称, 扩展状态

这个查询会将每台虚拟机的Agent状态与安装的扩展状态关联展示,便于排查Agent是否能正常管理扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:35:32