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

使用Azure CLI运行Azure Monitor日志分析查询时遇报错

问题解决与正确实现

1. 修正CLI命令语法错误

你执行的命令存在语法错误,az monitor log-analytics的子命令是query,而非-query,多余的短横线导致命令无法被系统识别。正确的基础命令格式:

az monitor log-analytics query -w <工作区ID> --analytics-query "<Kusto查询语句>"

2. 优化Kusto查询以获取已用磁盘空间

要获取所有订阅中VM的已用磁盘空间(非分配空间),需要调整Kusto查询,筛选对应性能计数器并关联VM的订阅、名称等关键信息:

Perf
| where ObjectName == "LogicalDisk" and CounterName in ("% Used Space", "Used Space")
| where InstanceName != "_Total"  // 排除磁盘总统计项
| extend VMName = tostring(parse_json(Tags)["vmName"]), SubscriptionId = tostring(parse_json(Tags)["subscriptionId"])
| project
    SubscriptionId,
    VMName,
    DiskName = InstanceName,
    UsedSpacePercent = iff(CounterName == "% Used Space", CounterValue, ""),
    UsedSpaceBytes = iff(CounterName == "Used Space", CounterValue * 1024 * 1024, "")  // 转换为字节单位,可根据实际计数器单位调整
| summarize arg_max(TimeGenerated, *) by SubscriptionId, VMName, DiskName

3. 完整执行命令示例

将<工作区ID>替换为你的实际工作区ID后执行:

az monitor log-analytics query -w xxxxxx --analytics-query "Perf | where ObjectName == 'LogicalDisk' and CounterName in ('% Used Space', 'Used Space') | where InstanceName != '_Total' | extend VMName = tostring(parse_json(Tags)['vmName']), SubscriptionId = tostring(parse_json(Tags)['subscriptionId']) | project SubscriptionId, VMName, DiskName = InstanceName, UsedSpacePercent = iff(CounterName == '% Used Space', CounterValue, ''), UsedSpaceBytes = iff(CounterName == 'Used Space', CounterValue * 1024 * 1024, '') | summarize arg_max(TimeGenerated, *) by SubscriptionId, VMName, DiskName"

补充说明

  • 确保你的Log Analytics工作区已为所有目标VM启用性能计数器收集,且包含LogicalDisk类别的% Used Space和Used Space计数器。
  • 若部分VM的Tags中未包含vmName或subscriptionId,可改用Computer字段关联VM信息,或检查VM诊断设置是否正确传递了这些元数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:35:48