如何在Azure中同时查看磁盘容量与已使用磁盘空间?
在Azure中同时获取磁盘容量与剩余空间
当然可以,你可以通过关联InsightsMetrics(获取磁盘使用数据)和resources(获取磁盘容量)两个数据集,用Kusto查询一次性拿到所需信息。以下是整合后的查询:
InsightsMetrics | where Origin == "vm.azm.ms" and Namespace == "LogicalDisk" and Name == "FreeSpacePercentage" | extend DiskMount = tostring(todynamic(Tags)["vm.azm.ms/mountId"]), DiskName = tostring(todynamic(Tags)["vm.azm.ms/diskName"]), VMResourceId = _ResourceId | summarize Disk_Free_Space_Pct = avg(Val) by Computer, DiskMount, DiskName, VMResourceId | join kind=leftouter ( resources | where type == "microsoft.compute/disks" | extend DiskSize_GB = toint(properties['diskSizeGB']), VMResourceId = tostring(managedBy) | project DiskName = name, DiskSize_GB, VMResourceId ) on DiskName, VMResourceId | project Computer, 磁盘挂载点 = DiskMount, 磁盘名称 = DiskName, 磁盘总容量_GB = DiskSize_GB, 剩余空间百分比 = Disk_Free_Space_Pct, 剩余空间_GB = round(DiskSize_GB * (Disk_Free_Space_Pct / 100), 2)
查询说明:
- 第一部分从
InsightsMetrics中提取VM上各磁盘的剩余空间百分比,同时解析出挂载点、磁盘名称和VM的资源ID。 - 第二部分从
resources中获取所有托管磁盘的容量,并通过managedBy字段关联到对应的VM资源ID。 - 通过
join将两个数据集关联,确保磁盘数据一一对应。 - 最后计算并展示剩余空间的GB数值,字段名可根据需求自行调整。
注意事项:
- 确保目标VM已启用Azure Monitor Agent,否则
InsightsMetrics中不会生成磁盘使用数据。 - 如果是未托管磁盘(目前较少见),
resources中无法直接获取容量,需从VM的Guest OS数据中补充。
内容的提问来源于stack exchange,提问作者ProgH
相关产品推荐
相关产品推荐

