你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍了如何在 Azure Monitor 中创建新的日志搜索警报规则或编辑现有日志搜索警报规则。 To learn more about alerts, see the alerts overview.
警报规则将要监视的资源、来自资源的监视数据以及要触发警报的条件组合在一起。 You can then define action groups and alert processing rules to determine what happens when an alert is triggered.
这些警报规则触发的警报会包含使用通用警报架构的有效负载。
Prerequisites
若要创建或编辑警报规则,你必须具有以下权限:
- 对警报规则的目标资源具有读取权限。
- 对在其中创建警报规则的资源组具有写入权限。 如果从 Azure 门户中创建预警规则,则默认在目标资源所在的同一资源组中创建预警规则。
- 对关联到警报规则的任何操作组具有读取权限(如果适用)。
在 Azure 门户中访问警报规则向导
可通过多种方式创建或编辑警报规则。
从门户主页创建或编辑警报规则
- In the Azure portal, select Monitor.
- On the left pane, select Alerts.
- Select + Create>Alert rule.
从特定资源创建或编辑警报规则
- In the Azure portal, go to the resource.
- On the left pane, select Alerts.
- Select + Create>Alert rule.
- 警报规则的范围设置为所选资源。 继续设置警报规则的条件。
编辑现有警报规则
In the Azure portal, either from the home page or from a specific resource, select Alerts on the left pane.
Select Alert rules.
Select the alert rule that you want to edit, and then select Edit.
选择警报规则的任一选项卡以编辑设置。
配置警报规则的范围
在“选择资源”窗格中,设置警报规则的范围。 可以按订阅、资源类型或资源位置进行筛选。
Select Apply.
配置警报规则条件
On the Condition tab, when you select the Signal name field, select Custom log search. 或者,如果要为条件选择其他信号,请选择“查看所有信号”。
(可选)如果在上一步中选择了“查看所有信号”,请使用“选择信号”窗格搜索信号名称或筛选信号列表。 Filter by:
- Signal type: Select Log search.
- Signal source: The service that sends the Custom log search and Log (saved query) signals. Select the signal name, and then select Apply.
On the Logs pane, write a query that returns the log events for which you want to create an alert. 若要使用其中一个预定义的警报规则查询,请展开“日志”窗格旁边的“架构和筛选器”窗格。 Then select the Queries tab, and select one of the queries.
请注意日志搜索警报规则查询存在以下限制:
- 日志搜索警报规则查询不支持
bag_unpack()
、pivot()
和narrow()
。 - Log search alert rule queries support ago() with timespan literals only.
AggregatedValue
是保留字。 它不能在日志搜索警报规则查询中使用。- 日志搜索警报规则属性中所有数据的总大小不能超过 64 KB。
- 在 KQL 查询中为日志搜索警报定义自定义函数时,请务必谨慎使用包含相对时间子句(例如 now())的函数代码。 未在日志搜索警报 KQL 查询中定义的具有相对时间子句的自定义函数可能导致查询结果不一致,从而影响警报评估的准确性和可靠性。 Therefore:
- 为了确保警报准确且及时,请始终直接在日志搜索警报 KQL 查询中定义相对时间子句。
- 如果函数内部需要时间范围,则应将其作为参数传递,并在函数中使用。
- 日志搜索警报规则查询不支持
(可选)如果正在查询 Azure 数据资源管理器或 Azure Resource Graph 群集,Log Analytics 工作区无法自动标识带有事件时间戳的列。 我们建议在查询中添加时间范围筛选器。 For example:
adx('https://help.kusto.windows.net/Samples').table | where MyTS >= ago(5m) and MyTS <= now()
arg("").Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project _ResourceId=tolower(id), tags
Note
- 在日志搜索警报中使用 Azure 资源图查询时,必须使用托管标识。
- 每个托管标识最多支持使用 Azure 资源图查询的 50 条日志搜索警报规则。
- 确保警报配置不超过此限制以保持适当的功能。
示例日志搜索警报查询可用于 Azure 数据资源管理器和 Resource Graph。
政府云不支持跨服务查询。 有关限制的详细信息,请参阅跨服务查询限制和将 Azure Resource Graph 表与 Log Analytics 工作区合并。
Select Run to run the alert.
The Preview section shows you the query results. 完成查询编辑后,选择“继续编辑警报”。
The Condition tab opens and is populated with your log query. 默认情况下,该规则将计算过去 5 分钟内的结果数。 如果系统检测到汇总的查询结果,将使用该信息自动更新规则。
In the Measurement section, select values for these fields:
Field Description Measure 日志搜索警报可以度量可用于各种监视方案的两种指标:
Table rows: You can use the number of returned rows to work with events such as Windows event logs, Syslog, and application exceptions.
数值列的计算:可以使用基于任何数值列的计算来包含任意数量的资源。 例如 CPU 百分比。Aggregation type 对多个记录执行的计算,以通过使用聚合粒度将这些记录聚合为一个数值。 Examples are Total, Average, Minimum, and Maximum. Aggregation granularity 用于将多条记录聚合为一个数值的间隔。 (可选)在“按维度拆分”部分中,可以借助维度为触发的警报提供上下文。
维度是查询结果中包含其他数据的列。 使用维度时,警报规则按维度值对查询结果进行分组,并单独评估每个组的结果。 如果满足条件,规则将为该组触发警报。 警报有效负载包括触发该警报的组合。
每个警报规则最多可以应用六个维度。 维度只能是字符串或数值列。 如果要使用不是数字或字符串类型的列作为维度,则必须在查询中将其转换为字符串或数值。 如果你选择多个维度值,则由组合产生的每个时序将触发它自身的警报,并将单独收费。
For example:
- 可以使用维度来监视运行网站或应用的多个实例上的 CPU 使用情况。 将单独监视每个实例,并针对 CPU 使用率超过配置值的每个实例发送通知。
- 需要将某个条件应用于范围内的多个资源时,你也可以决定不按维度拆分。 例如,如果需要在资源组范围内至少有五台计算机的 CPU 使用率高于配置值时触发警报,则不会使用维度。
通常,如果警报规则范围是工作区,则会在工作区上触发警报。 如果需要为每个受影响的 Azure 资源创建单独的警报,可以:
- 使用 Azure 资源管理器“Azure 资源 ID”列作为维度。 使用此选项时,则会在使用“Azure 资源 ID”列作为维度的工作区上触发警报。
- 在 Azure 资源 ID 属性中,将警报指定为一个维度。 使用此选项,可让查询返回的资源成为警报目标。 然后会在您的查询返回的资源(例如虚拟机或存储帐户)上触发警报,而不是在工作区上触发。
使用此选项时,如果工作区从多个订阅的资源中获取数据,则可能在与警报规则订阅不同的订阅资源上触发警报。
选择以下字段的值:
Field Description Dimension name 维度可以是数字列或字符串列。 维度用于监视特定的时序,并提供触发的警报的上下文。 Operator 对维度名称和值使用的运算符。 Dimension values 维度值基于过去 48 小时的数据。 选择“添加自定义值”以添加自定义维度值。 包括所有未来值 选择此字段可包含添加到所选维度的所有未来值。 In the Alert logic section, select values for these fields:
Field Description Operator 查询结果将转换为数字。 在此字段中,选择用于将数字与阈值进行比较的运算符。 Threshold value 阈值的数值。 评估频率 运行查询的频率。 可以将其设置为从一分钟到一天(24 小时)之中的任意时间。 Note
频率不是警报每天运行的特定时间。 而是警报规则多久运行一次。
There are some limitations to using an alert rule frequency of one minute. 将警报规则频率设置为一分钟时,将执行内部操作来优化查询。 如果此操作包含不受支持的操作,则可能会导致查询失败。 不支持查询的最常见原因是:
- 查询包含
search
、union
或take
(限制)操作。 - 查询包含
ingestion_time()
函数。 - 查询使用
adx
模式。 - 查询调用了调用其他表的函数。
示例日志搜索警报查询可用于 Azure 数据资源管理器和 Resource Graph。
- 查询包含
(Optional) In the Advanced options section, you can specify the number of failures and the alert evaluation period that's required to trigger an alert. For example, if you set Aggregation granularity to 5 minutes, you can specify that you want to trigger an alert only if three failures (15 minutes) happened in the last hour. 应用程序业务策略确定了此设置。
在“触发警报之前的违规次数”下选择以下字段的值:
Field Description 违规次数 触发警报的违规次数。 请注意,为了使用此查询,查询应在查询结果中包含“datetime”列。 Evaluation period 发生违规次数的时间段。 替代查询时间范围 如果希望警报评估期不同于查询时间范围,请在此处输入时间范围。
警报时间范围限制为最多两天。 即使查询包含时间范围超过 2 天的ago
命令,也会应用最大时间范围(2 天)。 例如,即使查询文本包含ago(7d)
,查询也最多只能扫描 2 天内的数据。 如果查询需要的数据多于警报评估,则可以手动更改时间范围。 如果查询包含ago
命令,它将自动更改为 2 天(48 小时)。Note
如果你或你的管理员分配了“关于 Log Analytics 工作区的 Azure 日志搜索警报应使用客户管理的密钥”Azure 策略,则必须选择“检查工作区链接存储”。 否则,规则创建将失败,因为它不符合策略要求。
The Preview chart shows the results of query evaluations over time. 可以更改图表时间段,或选择按维度进行的唯一警报拆分产生的时序。
Select Done. 配置警报规则条件后,可以配置警报规则详细信息以完成创建警报,也可以选择将操作和标记添加到警报规则。
配置警报规则操作
On the Actions tab, you can optionally select or create action groups for your alert rule.
可以选择为通知设置自定义电子邮件主题。 有关详细信息,请参阅 自定义日志搜索警报电子邮件主题。
配置警报规则详细信息
On the Details tab, under Project details, select the Subscription and Resource group values.
在“警报规则详细信息”下:
Select the Severity value.
输入“警报规则名称”和“警报规则说明”的值。
Note
使用身份标识的规则在“警报规则名称”的值中不能包含分号 (;) 字符。
Select the Region value.
In the Identity section, select which identity the log search alert rule uses for authentication when it sends the log query.
选择身份时,请注意以下几点:
- 如果要将查询发送到 Azure 数据资源管理器或 Resource Graph,则需要使用托管标识。
- 如果希望能够查看或编辑与警报规则关联的权限,请使用托管标识。
- 如果不使用托管标识,则警报规则权限将基于上次编辑规则时最后一个编辑规则的用户的权限。
- 请使用托管标识以帮助你避免规则无法按预期工作的情况,因为最后编辑规则的用户不一定对添加到规则范围内的所有资源都具有权限。
与规则关联的标识必须具有以下角色:
- If the query is accessing a Log Analytics workspace, the identity must be assigned a reader role for all workspaces that the query accesses. 如果要创建以资源为中心的日志搜索警报,警报规则可能会访问多个工作区,标识必须对所有这些工作区都具有读取者角色。
- If you're querying an Azure Data Explorer or Resource Graph cluster, you must add the reader role for all data sources that the query accesses. 例如,如果查询以资源为中心,则需要对该资源具有读取者角色。
- 如果查询是访问远程 Azure 数据探查器群集,则必须分配该标识:
- A reader role for all data sources that the query accesses. 例如,如果查询使用
adx()
函数调用远程 Azure 数据资源管理器群集,则它需要对该 Azure 数据资源管理器群集具有读取者角色。 - A database viewer role for all databases that the query accesses.
- A reader role for all data sources that the query accesses. 例如,如果查询使用
有关托管标识的详细信息,请参阅 Azure 资源的托管标识。
为警报规则使用的标识选择下列选项之一:
Identity option Description None 警报规则权限基于上次编辑规则时最后一个编辑规则的用户的权限。 启用系统分配的托管标识 Azure 为此警报规则创建新的专用标识。 此标识没有权限,在删除规则时会自动删除。 创建规则后,必须为此标识分配访问查询所需的工作区和数据源的权限。 若要详细了解如何分配权限,请参阅使用 Azure 门户分配 Azure 角色。 不支持使用链接存储的日志搜索警报规则。 启用用户分配的托管标识 在创建警报规则之前,你将创建一个标识,并为其分配用于查询日志的适当权限。 这是一个常规的 Azure 标识。 你可以在多个警报规则中使用同一个标识。 删除规则时不会删除该标识。 选择此类型的标识时,将打开一个窗格,供你选择规则的关联标识。 (Optional) In the Advanced options section, you can set several options:
Field Description 创建时启用 选择此选项可使警报规则在创建完成后立即开始运行。 自动解决警报 选择此项可使警报成为有状态警报。 如果警报是有状态的,当条件在特定时间范围内不再被满足时,警报将被清除。 时间范围因警报频率而异:
1 minute: The alert condition isn't met for 10 minutes.
5 到 15 分钟:在三个频率周期内未满足警报条件。
15 分钟到 11 个小时:不满足警报条件达两个频率周期。
11 - 12 小时:一个频率周期内未满足警报条件。
Note that stateful log search alerts have these limitations.Mute actions 选择此选项可以设置在再次触发警报操作之前等待的时间段。 在出现的“静音操作时长”字段中,选择在触发警报后和再次触发操作之前的等待时间。 检查工作区链接存储 如果为警报配置了工作区链接存储,请选择此选项。 如果未配置任何链接存储,则不会创建该规则。 -
(Optional) In the Custom properties section, if this alert rule contains action groups, you can add your own properties to include in the alert notification payload. 可以在操作组调用的操作(例如 Webhook、Azure 函数或逻辑应用操作)中使用这些属性。
使用静态文本、从警报有效负载中提取的动态值或两者的组合,将自定义属性指定为键/值对。
用于从警报有效负载中提取动态值的格式为:
${<path to schema field>}
。 例如:${data.essentials.monitorCondition}
。使用通用警报架构的格式指定有效负载中的字段,无论为警报规则配置的操作组是否使用通用架构。
Note
- 自定义属性会添加到警报的有效负载中,但它们不会显示在电子邮件模板或 Azure 门户中的警报详细信息中。
The following examples use values in Custom properties to utilize data from a payload that uses the common alert schema.
This example creates an Additional Details tag with data regarding the window start time and window end time:
- 名称:
Additional Details
- 值:
Evaluation windowStartTime: ${data.alertContext.condition.windowStartTime}. windowEndTime: ${data.alertContext.condition.windowEndTime}
- 结果:
AdditionalDetails:Evaluation windowStartTime: 2023-04-04T14:39:24.492Z. windowEndTime: 2023-04-04T14:44:24.492Z
此示例添加了有关解析或触发警报的原因的数据:
- 名称:
Alert ${data.essentials.monitorCondition} reason
- 值:
${data.alertContext.condition.allOf[0].metricName} ${data.alertContext.condition.allOf[0].operator} ${data.alertContext.condition.allOf[0].threshold} ${data.essentials.monitorCondition}. The value is ${data.alertContext.condition.allOf[0].metricValue}
- Potential results:
Alert Resolved reason: Percentage CPU GreaterThan5 Resolved. The value is 3.585
Alert Fired reason": "Percentage CPU GreaterThan5 Fired. The value is 10.585
配置警报规则标签
On the Tags tab, you can optionally set any required tags on the alert rule resource.
查看并创建警报规则
在“查看 + 创建”选项卡上,验证规则。 如果出现问题,请返回并进行修复。
When validation passes and you've reviewed the settings, select the Create button.