用于获取 Azure 监视器警报规则的 Powershell 命令不起作用

Posted

技术标签:

【中文标题】用于获取 Azure 监视器警报规则的 Powershell 命令不起作用【英文标题】:Powershell command to fetch Azure monitor alert rules is not working 【发布时间】:2019-09-02 21:19:26 【问题描述】:

我已创建警报规则并将其与 VM 关联。现在尝试通过 Powershell 获取警报规则,但为空。这段代码有什么问题?

Get-AzAlertRule -ResourceGroupName 'pacbldnew'

see the alert rule powershell code returning null

【问题讨论】:

【参考方案1】:

这只是一个警告。该命令应该可以工作,请确保警报规则存在。

更新1

试试下面的命令来得到你想要的。

Get-AzResource -ResourceGroupName joywebapp -ResourceType microsoft.insights/metricAlerts 

更新2

如果您想获取详细信息,请尝试以下脚本。

$names = (Get-AzResource -ResourceGroupName joywebapp -ResourceType microsoft.insights/metricAlerts).Name
foreach($name in $names)
    Get-AzResource -ResourceGroupName joywebapp -Name $name -ResourceType microsoft.insights/metricAlerts | ConvertTo-Json

【讨论】:

@SouravKarmakar Get-AzAlertRule 命令只是获取经典警报,其资源类型为microsoft.insights/alertrules,要获取microsoft.insights/metricAlerts,您可以尝试此link 中的方式。它使用旧的 AzureRM 模块,只需转换为 Az,它应该可以工作。 @SouravKarmakar 你能明白吗?有关更多详细信息,请参阅我的更新。如果有帮助,请采纳为答案,谢谢。 是的,我明白了。但我的要求略有不同。我想获取有关警报规则的详细信息。 @SouravKarmakar 实际上,详细信息应该包含在响应中,只需对输出进行一些操作以显示它们。我现在不能给你测试,你可以先自己试试,如果你不能得到,我会在星期一给你测试。 @SouravKarmakar 如果您想了解详细信息,请参阅我的更新2。【参考方案2】:

Joy 的正确之处在于 cmdlet 仍应执行,因为您看到的只是一个警告。但是,这可能会发生,因为 Powershell 对更新的指标警报的支持仍在进行中,正如官方 docs 中提到的那样。

此外,作为替代方案,如果有帮助,您可以使用 Azure CLI 到 list newer Metric Alerts,因为它现在支持获取属于 Microsoft.Insights/metricAlerts 资源类型的查询的详细结果。

例如:

az monitor metrics alert list -g <Resource group name> --output yaml

结果如下所示:

您还可以从 Az CLI 提供的众多 output formats(json、jsonc、yaml、table、tsv)中进行选择。

希望这会有所帮助!

【讨论】:

【参考方案3】:

转到Azure-家庭安全中心和设置过滤并提取所有规则

【讨论】:

以上是关于用于获取 Azure 监视器警报规则的 Powershell 命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Azure 监视器规则的自定义条件不显示预期数据

为从门户创建的 Azure 日志分析警报导出 ARM 模板

如何监视 Azure SQL 中的表是不是为空?

是否可以在Azure ARM模板中执行迭代字符串替换?

监视 Azure 虚拟机上运行的服务/应用程序的最佳方法是啥

用于容器的 Azure 监视器 v/s 应用程序见解