1

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

由于过滤虚拟机刀片不适用于 VM 的电源状态,因此我转向了资源图。从那里解决方案接近,但似乎不可能过滤电源状态(还)。

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

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

4

2 回答 2

3

资源图架构中似乎没有包含 VM 的 PowerState 的表(至少我找不到)

既然您说过您还想听听完全不同的方法,我想建议 PowerShell 路线

您可以使用以下命令获取 VM 的 PowerState

Get-AzVM -Status

在此处输入图像描述

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

您可以在此表存储筛选之上构建 Power BI 报告,仅针对PowerState == running并点亮您的报告。

现在要安排这个,你需要

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

b) 创建获取 VM 状态并将行插入表存储的 PowerShell 运行手册

c) 创建一个计划并将运行手册链接到它。可以在此处找到有关如何安排的详细信息 [ https://docs.microsoft.com/en-us/azure/automation/shared-resources/schedules]

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

希望这可以帮助

于 2020-06-05T17:09:56.457 回答
2

hope the example below works for you

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

Cheers,

于 2020-09-18T01:12:31.850 回答