管理在以前的版本中创建的警报规则
本文介绍了管理在之前的 UI 中或使用 API 版本 2018-04-16
或更低版本创建的警报规则的流程。 按照使用 Azure Monitor 创建、查看和管理日志搜索警报中所述,在新的 UI 中查看和管理在最新 UI 中创建的警报规则。
更改日志搜索警报规则创建体验
当前的警报规则向导与以前的体验不同:
- 以前,搜索结果包含在触发的警报及其关联的通知的有效负载中。 此电子邮件仅包含来自未筛选结果中的 10 行,而 Webhook 有效负载包含 1,000 个未筛选结果。 若要获取有关警报的详细上下文信息,以便可确定相应的操作,请执行以下操作:
- 我们建议使用维度。 维度提供触发警报的列值,让你了解有关触发警报的原因以及如何解决问题的上下文。
- 如果需要在日志中进行调查,请使用警报中的链接来查看日志中的搜索结果。
- 新警报规则向导不支持 JSON 有效负载的自定义。
- 使用新 API 中的自定义属性将静态参数和关联值添加到警报触发的 Webhook 操作。
- 新警报规则向导不支持电子邮件主题的自定义。
- 客户通常使用自定义电子邮件主题来指示触发了警报的资源,而不是使用 Log Analytics 工作区。 使用新 API 通过资源 ID 列来触发所需资源的警报。
在 Azure 门户中管理在以前版本中创建的警报规则
在 Azure 门户中,选择所需的资源。
在“监视”下,选择“警报” 。
在顶部栏中,选择“警报规则”。
选择要编辑的警报规则。
在“条件”部分中,选择条件。
“配置信号逻辑”窗格随即打开,并且查询的历史数据将显示为图。 你可以更改图表的时间范围,以显示过去六个小时到上一周的数据。 如果查询结果包含汇总数据或特定列(不包含时间列),则图表将显示单个值。
使用以下部分编辑警报规则条件:
搜索查询:在本部分中,你可以修改查询。
警报逻辑:日志搜索警报可以基于两种类型的度量值:
- 结果数:查询返回的记录数。
- 指标度量:在计算聚合值时将使用按所选表达式分组的
summarize
和所选的 bin()。 例如:// Reported errors union Event, Syslog // Event table stores Windows event records, Syslog stores Linux records | where EventLevelName == "Error" // EventLevelName is used in the Event (Windows) records or SeverityLevel== "err" // SeverityLevel is used in Syslog (Linux) records | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
对于指标度量警报逻辑,可以使用“聚合对象”选项来指定如何按维度拆分警报。 行分组表达式必须唯一且已排序。
bin() 函数可能会导致不均匀的时间间隔,因此,警报服务会自动将 bin() 函数转换为针对运行时的相应时间的 binat() 函数,以确保生成针对确定时间点的结果。
注意
“按警报维度拆分”选项仅适用于当前的 scheduledQueryRules API。
时段:使用时段选项选择评估指定条件的时间范围。
编辑完条件后,选择“完成”。
使用“总计违规次数”或“连续违规次数”来设置触发警报的违规次数。
选择“完成”。
你可以编辑规则的“描述”和“严重性”。 这些详细信息将用于所有警报操作。 你还可以通过选择“创建后启用规则”,选择在创建后不激活该预警规则。
如需选择是否要在触发警报后的指定时间内阻止规则操作,可使用“阻止警报”选项。 该规则仍会运行并创建警报,但不会触发操作,从而避免干扰。 “静音操作”值必须大于警报频率才能生效。
若要使警报有状态,请选择“自动解决警报(预览)”。
指定警报规则在满足警报条件时是否应触发一个或多个操作组。 有关对可以执行的操作的限制,请参阅《Azure Monitor 服务限制》。
(可选)自定义日志搜索警报规则中的操作:
- 自定义电子邮件主题:替代电子邮件操作的电子邮件主题。 无法修改邮件正文,并且该字段不能用于电子邮件地址。
- 包括 Webhook 的自定义 JSON 有效负载:假定操作组包含 Webhook 操作,则替代操作组使用的 Webhook JSON。 详细了解用于日志搜索警报的 Webhook 操作。
完成所有警报规则选项的编辑后,选择“保存”。
使用 PowerShell 管理日志搜索警报
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
使用下面的 PowerShell cmdlet 使用计划查询规则 API 来管理规则:
- New-AzScheduledQueryRule:此 PowerShell cmdlet 用来创建新的日志搜索警报规则。
- Set-AzScheduledQueryRule:此 PowerShell cmdlet 用来更新现有的日志搜索警报规则。
- New-AzScheduledQueryRuleSource:此 PowerShell cmdlet 用来创建或更新指定了日志搜索警报源参数的对象。 由 New-AzScheduledQueryRule 和 Set-AzScheduledQueryRule cmdlet 用作输入。
- New-AzScheduledQueryRuleSchedule:此 PowerShell cmdlet 用来创建或更新指定了日志搜索警报计划参数的对象。 由 New-AzScheduledQueryRule 和 Set-AzScheduledQueryRule cmdlet 用作输入。
- New-AzScheduledQueryRuleAlertingAction:此 PowerShell cmdlet 用来创建或更新指定了日志搜索警报操作参数的对象。 由 New-AzScheduledQueryRule 和 Set-AzScheduledQueryRule cmdlet 用作输入。
- New-AzScheduledQueryRuleAznsActionGroup:此 PowerShell cmdlet 用来创建或更新指定了日志搜索警报操作组参数的对象。 由 New-AzScheduledQueryRuleAlertingAction cmdlet 用作输入。
- New-AzScheduledQueryRuleTriggerCondition:此 PowerShell cmdlet 用来创建或更新指定了日志搜索警报的触发条件参数的对象。 由 New-AzScheduledQueryRuleAlertingAction cmdlet 用作输入。
- New-AzScheduledQueryRuleLogMetricTrigger:此 PowerShell cmdlet 用来创建或更新指定了指标度量日志搜索警报的指标触发条件参数的对象。 由 New-AzScheduledQueryRuleTriggerCondition cmdlet 用作输入。
- Get-AzScheduledQueryRule:此 PowerShell cmdlet 用来列出现有日志搜索警报规则或特定的日志搜索警报规则。
- Update-AzScheduledQueryRule:此 PowerShell cmdlet 用来启用或禁用日志搜索警报规则。
- Remove-AzScheduledQueryRule:此 PowerShell cmdlet 用来删除现有日志搜索警报规则。
注意
ScheduledQueryRules
PowerShell cmdlet 只能管理在此版本的计划查询规则 API 中创建的规则。
使用 PowerShell 创建日志搜索警报规则的示例步骤:
$source = New-AzScheduledQueryRuleSource -Query 'Heartbeat | summarize AggregatedValue = count() by bin(TimeGenerated, 5m), _ResourceId' -DataSourceId "/subscriptions/a123d7efg-123c-1234-5678-a12bc3defgh4/resourceGroups/contosoRG/providers/microsoft.OperationalInsights/workspaces/servicews"
$schedule = New-AzScheduledQueryRuleSchedule -FrequencyInMinutes 15 -TimeWindowInMinutes 30
$metricTrigger = New-AzScheduledQueryRuleLogMetricTrigger -ThresholdOperator "GreaterThan" -Threshold 2 -MetricTriggerType "Consecutive" -MetricColumn "_ResourceId"
$triggerCondition = New-AzScheduledQueryRuleTriggerCondition -ThresholdOperator "LessThan" -Threshold 5 -MetricTrigger $metricTrigger
$aznsActionGroup = New-AzScheduledQueryRuleAznsActionGroup -ActionGroup "/subscriptions/a123d7efg-123c-1234-5678-a12bc3defgh4/resourceGroups/contosoRG/providers/microsoft.insights/actiongroups/sampleAG" -EmailSubject "Custom email subject" -CustomWebhookPayload "{ `"alert`":`"#alertrulename`", `"IncludeSearchResults`":true }"
$alertingAction = New-AzScheduledQueryRuleAlertingAction -AznsAction $aznsActionGroup -Severity "3" -Trigger $triggerCondition
New-AzScheduledQueryRule -ResourceGroupName "contosoRG" -Location "Region Name for your Application Insights App or Log Analytics Workspace" -Action $alertingAction -Enabled $true -Description "Alert description" -Schedule $schedule -Source $source -Name "Alert Name"
使用 PowerShell 通过跨资源查询创建日志搜索警报规则的示例步骤:
$authorized = @ ("/subscriptions/a123d7efg-123c-1234-5678-a12bc3defgh4/resourceGroups/contosoRG/providers/microsoft.OperationalInsights/workspaces/servicewsCrossExample", "/subscriptions/a123d7efg-123c-1234-5678-a12bc3defgh4/resourceGroups/contosoRG/providers/microsoft.insights/components/serviceAppInsights")
$source = New-AzScheduledQueryRuleSource -Query 'Heartbeat | summarize AggregatedValue = count() by bin(TimeGenerated, 5m), _ResourceId' -DataSourceId "/subscriptions/a123d7efg-123c-1234-5678-a12bc3defgh4/resourceGroups/contosoRG/providers/microsoft.OperationalInsights/workspaces/servicews" -AuthorizedResource $authorized
$schedule = New-AzScheduledQueryRuleSchedule -FrequencyInMinutes 15 -TimeWindowInMinutes 30
$metricTrigger = New-AzScheduledQueryRuleLogMetricTrigger -ThresholdOperator "GreaterThan" -Threshold 2 -MetricTriggerType "Consecutive" -MetricColumn "_ResourceId"
$triggerCondition = New-AzScheduledQueryRuleTriggerCondition -ThresholdOperator "LessThan" -Threshold 5 -MetricTrigger $metricTrigger
$aznsActionGroup = New-AzScheduledQueryRuleAznsActionGroup -ActionGroup "/subscriptions/a123d7efg-123c-1234-5678-a12bc3defgh4/resourceGroups/contosoRG/providers/microsoft.insights/actiongroups/sampleAG" -EmailSubject "Custom email subject" -CustomWebhookPayload "{ `"alert`":`"#alertrulename`", `"IncludeSearchResults`":true }"
$alertingAction = New-AzScheduledQueryRuleAlertingAction -AznsAction $aznsActionGroup -Severity "3" -Trigger $triggerCondition
New-AzScheduledQueryRule -ResourceGroupName "contosoRG" -Location "Region Name for your Application Insights App or Log Analytics Workspace" -Action $alertingAction -Enabled $true -Description "Alert description" -Schedule $schedule -Source $source -Name "Alert Name"
还可通过 PowerShell 使用模板和参数文件来创建日志搜索警报:
Connect-AzAccount -Environment AzureChinaCloud
Select-AzSubscription -SubscriptionName <yourSubscriptionName>
New-AzResourceGroupDeployment -Name AlertDeployment -ResourceGroupName ResourceGroupofTargetResource `
-TemplateFile mylogalerttemplate.json -TemplateParameterFile mylogalerttemplate.parameters.json
后续步骤
- 了解日志搜索警报。
- 使用 Azure 资源管理器模板创建日志搜索警报。
- 了解用于日志搜索警报的 Webhook 操作。
- 了解有关日志查询的详细信息。