我有一个Azure监控警报规则,它会每5分钟检查我的虚拟机的心跳。但是,虚拟机本身将在每天晚上11点离线,并将在第二天上午9点再次启动。
所以我尝试使用Azure自动化同时禁用/启用我的警报规则。这是我尝试使用的代码:
Write-Output "start job"
$vmResourceGroupName = <<resource_group>>
$vmName = <<vm_name>>
try
{
# Connection
Write-Output "connect to the VM"
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
$rcConn = Connect-AzAccount -ServicePrincipal -TenantId $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
# Stop the VM
Write-Output "Stop the VM"
stop-AzVM -ResourceGroupName $vmResourceGroupName -Name $vmName -Force
#first method that I use to disable my alert rules
Get-AzAlertRule -ResourceGroupName $vmResourceGroupName -TargetResourceId <<my_resource_id>> -DisableRule
#second method that I use to disable my alert rules
Disable-AzureRmActivityLogAlert -Name <<my_alert_name>> -ResourceGroupName <<my_resource_group>>
}
catch
{
if($_.Exception.Message)
{
Write-Error -Message "$($_.Exception.Message)" -ErrorAction Continue
}
else
{
Write-Error -Message "$($_.Exception)" -ErrorAction Continue
}
throw "$($_.Exception)"
}
finally
{
Write-Output "end job"
}
我使用的两个方法都返回一个错误,说我的警报规则未找到。
5条答案
按热度按时间tmb3ates1#
我同意Joy对新指标警报的回答,但是如果您的警报是“日志搜索”信号类型,而不是“指标”信号类型,那么您必须禁用警报,如下所示。
插图:
相关参考文献:
希望这有帮助!!
zy1mlcev2#
我假设您将三种类型的警报混合在一起,
ActivityLogAlert
,metric alert(classic)
,metric alert(new)
。它们有不同的资源类型,您创建的应该是metric alert(new)
,您可以在Azure Portal ->Monitor
->Alerts
->Manage alert rules
中找到。如果是,请尝试以下命令禁用警报。
更新:
您的
SIGNAL TYPE
是Log Search
,其资源类型是microsoft.insights/scheduledqueryrules
。我测试它与你一样的警报,下面的命令应该工作,确保你使用正确的资源组名和规则名。9o685dep3#
只是想知道,而不是开发自定义的powershell代码。如果您创建了此抑制规则,则可以跳过在Runbook中为VM禁用警报的部分。
是否尝试使用“警报抑制”(操作规则)选项。下面是这个https://learn.microsoft.com/en-us/azure/azure-monitor/platform/alerts-action-rules的文档。您可以尝试使用UI将此计划为每日重复,这将抑制指定时间之间的所有警报。
1)Azure Monitor -> Alerts -> Manage Actions -> Action Rules(预览版)。您可以设置如下规则,它将自动抑制警报。
目前还没有powershell命令(你仍然可以使用arm API调用)来配置操作规则,我听说他们很快就会在几个月内推出一个。
rseugnpd4#
Joy和Khrisna的回答帮助我解决了这个问题。我这边有一件事,因为我的日志分析工作区是去年做的,它不支持Get-AzScheduledQuery API。要解决此问题,您可以:1.将您的工作区迁移到新的工作区2.更新工作区设置,使其支持Get-AzScheduledQuery。您可以按照本教程更新设置:
Tutorial
希望有帮助!
o4tp2gmn5#
任何人寻找解决方案,下面的命令作品设置禁用或启用标志,以这种方式=>启用:$false
Update-AzScheduledQueryRule -Name 'xxxname' -ResourceGroupName 'xxxxrg' -Enabled:$false