0

我正在尝试在 Azure 中运行查询以显示特定订阅下 Azure 中每个 VM 的可用磁盘空间或已用磁盘空间,我想在结果中显示 VM 的实际磁盘大小。我需要数据来识别过度分配的资源并将其缩小以最小化成本。有人可以帮我修改查询,以便在可用磁盘空间之外的另一列中显示 VM 的实际磁盘大小?还是有其他方法可以获取我需要的磁盘数据?

这是我从 Azure 在 Monitor>Logs>Query 下运行的查询

InsightsMetrics
| where Origin == "vm.azm.ms"
 and Namespace == "LogicalDisk" and Name == "FreeSpacePercentage"
| extend Disk=tostring(todynamic(Tags)["vm.azm.ms/mountId"])
| summarize Disk_Free_Space = avg(Val) by Computer, Disk, _ResourceId
| project Computer, Disk, Disk_Free_Space

并且只显示 3 列 Computer Name, Disk, Disk_Free_Space

4

1 回答 1

0

请检查以下几点是否可以提供一个想法。

  1. 根据Expand virtual hard disks - Azure VM's | 微软文档

通过从 Azure 市场部署映像在资源组中创建新虚拟机 (VM) 时,默认操作系统 (OS) 驱动器通常为 127 GB(某些映像默认具有较小的操作系统磁盘大小)。即使可以将数据磁盘添加到 VM(数量取决于您选择的 SKU)

  1. 尝试汇总已用内存和可用空间以获得总内存,并尝试从中获取名为总磁盘空间或内存的列。

  2. 希望这个参考计算总内存可能会给出一个想法。

  3. 另请参阅Azure Resource Graph 示例查询,其中查询查找虚拟机规模集资源并获取各种详细信息,包括虚拟机大小和规模集的容量。

  4. Azure VM RAM 和 CPU 大小取决于为 VM 选择的硬件配置文件。在此示例中,我们将检索 VM (TestMachine2k16) 硬件配置文件,然后我们可以找到为其分配了多少 RAM 或 CPU。

  5. 要获取Azure VM 的大小,请尝试使用 powershell。

     $azvm = Get-AzVM -VMName 'VMname'
    $azvm.HardwareProfile.VmSize
    

我们可以在 Microsoft Azure 网站上查看上述输出大小,以了解与其关联的 RAM 和 CPU 数量,以及使用 PowerShellGet-AZVmSize命令的另一种方式。

$vmsize = $azvm.HardwareProfile.VmSize Get-AzVMSize -VMName $azvm.Name -ResourceGroupName $azvm.ResourceGroupName | 其中{$_.Name -eq $vmsize}

  1. 我们可以监控 VM 内存使用性能:转到您的 VM -> Monitoring -> Insight 在此处输入图像描述
  2. 设置警报并在达到阈值时收到通知 - 然后您可以通过创建日志警报规则来完成。有关更多信息,请参阅文档。

参考:

  1. Azure 上的 Log Analytics 中的磁盘查询 - 代码日志
  2. 是否有任何 API 可以查询 Azure VM 的可用磁盘/内存空间?- (starwindsoftware.com)
  3. 调整 Azure VM 的磁盘大小 | 星风博客 (starwindsoftware.com)
  4. 帮助在 10gb 或更少时为磁盘空间警报设置 azure 警报 - Microsoft Q&A
于 2022-03-04T13:10:23.017 回答