你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

管理在以前的版本中创建的警报规则

本文介绍了管理在之前的 UI 中或使用 API 版本 2018-04-16 或更低版本创建的警报规则的流程。 按照使用 Azure Monitor 创建、查看和管理日志搜索警报中所述,在新的 UI 中查看和管理在最新 UI 中创建的警报规则。

更改日志搜索警报规则创建体验

当前的警报规则向导与以前的体验不同:

  • 以前,搜索结果包含在触发的警报及其关联的通知的有效负载中。 此电子邮件仅包含来自未筛选结果中的 10 行,而 Webhook 有效负载包含 1,000 个未筛选结果。 若要获取有关警报的详细上下文信息,以便可确定相应的操作,请执行以下操作:
    • 我们建议使用维度。 维度提供触发警报的列值,让你了解有关触发警报的原因以及如何解决问题的上下文。
    • 如果需要在日志中进行调查,请使用警报中的链接来查看日志中的搜索结果。
    • 如果需要原始搜索结果或进行任何其他高级自定义,请使用 Azure 逻辑应用
  • 新警报规则向导不支持 JSON 有效负载的自定义。
    • 使用新 API 中的自定义属性将静态参数和关联值添加到警报触发的 Webhook 操作。
    • *如需进行更多高级自定义,请使用 Azure 逻辑应用
  • 新警报规则向导不支持电子邮件主题的自定义。
    • 客户通常使用自定义电子邮件主题来指示触发了警报的资源,而不是使用 Log Analytics 工作区。 使用新 API 通过资源 ID 列来触发所需资源的警报。
    • *如需进行更多高级自定义,请使用 Azure 逻辑应用

在 Azure 门户中管理在以前版本中创建的警报规则

  1. Azure 门户中,选择所需的资源。

  2. 在“监视”下,选择“警报” 。

  3. 在顶部栏中,选择“警报规则”。

  4. 选择要编辑的警报规则。

  5. 在“条件”部分中,选择条件。

  6. “配置信号逻辑”窗格随即打开,并且查询的历史数据将显示为图。 你可以更改图表的时间范围,以显示过去六个小时到上一周的数据。 如果查询结果包含汇总数据或特定列(不包含时间列),则图表将显示单个值。

    显示了“配置信号逻辑”窗格的屏幕截图。

  7. 使用以下部分编辑警报规则条件:

    • 搜索查询:在本部分中,你可以修改查询。

    • 警报逻辑:日志搜索警报可以基于两种类型的度量值

      1. 结果数:查询返回的记录数。
      2. 指标度量:在计算聚合值时将使用按所选表达式分组的 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。 如果使用旧的 Log Analytics 警报 API,则需要进行切换。 了解有关切换的详细信息。 仅在 API 版本 2021-08-01 及更高版本中支持大规模的以资源为中心的警报。

      显示了“聚合对象”的屏幕截图。

    • 时段:使用时段选项选择评估指定条件的时间范围。

  8. 编辑完条件后,选择“完成”。

  9. 使用预览数据设置运算符、阈值频率

  10. 使用“总计违规次数”或“连续违规次数”来设置触发警报的违规次数

  11. 选择“完成”。

  12. 你可以编辑规则的“描述”和“严重性”。 这些详细信息将用于所有警报操作。 你还可以通过选择“创建后启用规则”,选择在创建后不激活该预警规则。

  13. 如需选择是否要在触发警报后的指定时间内阻止规则操作,可使用“阻止警报”选项。 该规则仍会运行并创建警报,但不会触发操作,从而避免干扰。 “静音操作”值必须大于警报频率才能生效。

    屏幕截图显示了“警报详细信息”窗格。

  14. 若要使警报有状态,请选择“自动解决警报(预览)”。

  15. 指定警报规则在满足警报条件时是否应触发一个或多个操作组。 有关对可以执行的操作的限制,请参阅《Azure Monitor 服务限制》。

  16. (可选)自定义日志搜索警报规则中的操作:

    • 自定义电子邮件主题:替代电子邮件操作的电子邮件主题。 无法修改邮件正文,并且该字段不能用于电子邮件地址。
    • 包括 Webhook 的自定义 JSON 有效负载:假定操作组包含 Webhook 操作,则替代操作组使用的 Webhook JSON。 详细了解用于日志搜索警报的 Webhook 操作

    显示替代日志搜索警报的操作的屏幕截图。

  17. 完成所有警报规则选项的编辑后,选择“保存”。

使用 PowerShell 管理日志搜索警报

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

使用下面的 PowerShell cmdlet 使用计划查询规则 API 来管理规则:

注意

ScheduledQueryRules PowerShell cmdlet 只能管理在此版本的计划查询规则 API 中创建的规则。 仅在切换到计划的查询规则 API 之后,才能通过 PowerShell 管理使用旧版 Log Analytics 警报 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
Select-AzSubscription -SubscriptionName <yourSubscriptionName>
New-AzResourceGroupDeployment -Name AlertDeployment -ResourceGroupName ResourceGroupofTargetResource `
  -TemplateFile mylogalerttemplate.json -TemplateParameterFile mylogalerttemplate.parameters.json

后续步骤