在仪表板上显示 运行 Azure VM 的数量

Display number of running Azure VM's on a dashboard

我想在 Azure 门户中创建一个仪表板,显示每个资源组的活动虚拟机数量。在这种情况下,我对任何已解除分配或已停止的虚拟机不感兴趣。

由于过滤虚拟机 blade 对虚拟机的电源状态不起作用,我求助于资源图。从那里解决方案接近,但似乎无法过滤电源状态(目前)。

resources
| where type == "microsoft.compute/virtualmachines"
| summarize count() by resourceGroup
| order by resourceGroup asc

有没有办法将此数据与另一个数据 table 结合起来,以便能够过滤电源状态并仅获取 运行 个虚拟机?或者也许完全不同的解决方案只是在仪表板上显示 运行 虚拟机的数量?

在 Resource Graph 模式中似乎没有 table 保存 VM 的 PowerState(至少我找不到)

既然你说过你也想听听完全不同的方法,我想推荐 PowerShell 路线

您可以使用以下命令获取虚拟机的 PowerState

Get-AzVM -Status

您可以将此输出写入 Azure table 存储。 (此 link 详细介绍了如何使用 PowerShell 与 Azure 存储帐户进行交互 [https://docs.microsoft.com/en-us/azure/storage/tables/table-storage-how-to-use-powershell]

您可以在此 table 存储过滤之上构建一个 Power BI 报告,仅用于 PowerState == 运行 并点亮您的报告。

现在要安排这个,您需要

a) 创建一个自动化帐户。有关如何创建自动化帐户的详细信息,请参见此处 [https://docs.microsoft.com/en-us/azure/automation/automation-create-standalone-account]

b) 创建一个 PowerShell 运行手册,获取 VM 状态并将行插入 table 存储

c) 创建计划并link 运行手册。 有关如何安排的详细信息,请参见此处 [https://docs.microsoft.com/en-us/azure/automation/shared-resources/schedules]

因此,使用 Azure 自动化帐户和 Runbook(b 点),您可以设置一个时间表,link Runbook 与该时间表。每当 runbook 执行时,它都会获取当前的 powerstatus 并根据计划将其上传到 Azure Table 存储,这将使 PowerBI 保持更新。

希望对您有所帮助

希望下面的示例对您有用

resources
| where type == "microsoft.compute/virtualmachines"
| where properties.extended.instanceView.powerState.displayStatus=="VM running"
| summarize count() by resourceGroup
| order by resourceGroup asc

干杯,