

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用通知策略
<a name="v9-alerting-notification-policies"></a>

****  
本文档主题专为支持 **Grafana 9.x 版本**的 Grafana 工作区而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 8](using-grafana-v8.md)。

通知策略决定如何将警报路由到联系点。策略具有树形结构，其中每个策略都可以有一个或多个子策略。除了根策略外，每个策略还可以匹配特定的警报标签。每个警报先由根策略进行评估，然后由每个子策略进行评估。如果为特定策略启用了 `Continue matching subsequent sibling nodes` 选项，则即使有一个或多个匹配项，评估仍会继续。父策略的配置设置和联系点信息控制着与任何子策略都不匹配的警报的行为。根策略将管理所有与特定策略不匹配的警报。

**注意**  
您可以为 Grafana 托管的警报创建和编辑通知策略。Alertmanager 警报的通知策略是只读的。

**对通知进行分组**

分组将性质相似的警报通知归类到单个漏斗中。这样一来，当系统的许多部分同时发生故障，导致大量警报同时启动时，您就可以在大规模故障期间控制警报通知。

**分组示例**

假设有 100 个服务在不同的环境中连接到一个数据库。这些服务由标签 `env=environmentname` 区分。已设置警报规则，用于监控您的服务是否可以访问数据库。警报规则会创建名为 `alertname=DatabaseUnreachable` 的警报。

如果发生网络分区，有一半的服务无法再访问数据库，则会启动 50 个不同的警报。对于这种情况，您会希望收到列出受影响环境的单页通知（而不是 50 页）。

您可以将分组配置为 `group_by: [alertname]`（不使用 `env` 标签，该标签对于每个服务都不同）。完成此配置后，Grafana 会发送一条简要的通知，其中包含此警报规则的所有受影响环境。

**特殊组**

Grafana 有两个特殊组。默认组 `group_by: null` 会将*所有*警报分组中到一个组中。您也可以使用名为 `...` 的特殊标签，按所有标签对警报进行分组，从而有效地禁用分组，并将每个警报发送到其自己的组中。

## 使用通知
<a name="v9-alerting-notification-policies-working"></a>

以下过程演示了如何创建和管理通知策略。

**编辑根通知策略**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**通知策略**。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 在**根策略**部分，选择**编辑**图标（笔）。

1. 在**默认联系点**中，更新当警报规则与任何特定策略都不匹配时，应向其发送规则通知的联系点。

1. 在**分组依据**中，选择用于对警报进行分组的标签（或特殊组）。

1. 在**定时选项**中，选择以下选项。
   + **组等待**：在发送初始通知前，缓冲同一组警报的等待时间。默认值为 30 秒。
   + **组间隔**：一个组的两次通知之间的最短时间间隔。默认值为 5 分钟。
   + **重复间隔**：如果组内未添加新警报，在重新发送通知之前的最短时间间隔。默认为 4 小时。

1. 选择 **保存** 以保存您的更改。

**添加新的顶级特定策略**

1. 在 Grafana 控制台的 Grafana 菜单中，选择**警报**（铃铛）图标，打开**警报**页面。

1. 选择**通知策略**。

1. 从 **Alertmanager** 下拉列表中，选择要编辑的 Alertmanager。

1. 在**特定路由**部分，选择**新建特定策略**。

1. 在**匹配标签**部分，添加一个或多个匹配的警报标签。有关标签匹配的更多信息，请参阅本主题的后半部分。

1. 在**联系点**中，添加当警报与此特定策略匹配时，要向其发送通知的联系点。嵌套策略会覆盖此联系点。

1. （可选）启用**继续匹配后续同级节点**以继续匹配同级策略，即使警报与当前策略匹配后也是如此。启用此策略后，您可以收到关于同一警报的多个通知。

1. 可以选择**覆盖分组**，指定与根策略不同的分组。

1. 可以选择**覆盖一般定时**，以覆盖组通知策略中的定时选项。

1. 选择**保存策略**以保存您的更改。

**要添加嵌套策略**

1. 展开要在其下创建嵌套策略的特定策略。

1. 选择**添加嵌套策略**，然后添加详细信息（就和添加顶级特定策略时一样）。

1. 选择**保存策略**以保存您的更改。

**编辑特定策略**

1. 在**警报**页面，选择**通知策略**，打开列出现有策略的页面。

1. 选择要编辑的策略，然后选择**编辑**图标（笔）。

1. 进行任何更改（和添加顶级特定策略时一样）。

1. 选择**保存策略**。

**搜索策略**

您可以按*标签匹配程序*或*联系点*在策略树中进行搜索。
+ 要按联系点搜索，请在**按联系点搜索**字段中输入联系点的部分或全部名称。
+ 要按标签搜索，请在**按标签搜索**字段中输入有效的标签匹配程序。您可以输入多个匹配程序，以逗号分隔。例如，有效的匹配程序输入为 `severity=high, region=~EMEA|NA`。
**注意**  
按标签搜索时，所有匹配的策略都将完全匹配。不支持部分匹配和正则表达式匹配。

**标签匹配的工作原理**

如果警报的标签与策略中指定的所有*匹配标签*相匹配，则策略与警报相匹配。
+ **标签**：要匹配的标签名称。必须与警报的标签名称完全匹配。
+ **运算符**：用于将标签值与匹配标签值进行比较的运算符。可用的运算符有：
  + `=` 选择其值与提供的字符串完全匹配的标签。
  + `!=` 选择其值与提供的字符串不匹配的标签。
  + `=~` 选择其值与所提供字符串的正则表达式解释值相匹配的标签（提供的字符串被解释为正则表达式）。
  + `!=` 选择与提供的正则表达式不匹配的标签。
+ **值**：要与标签值匹配的值。可作为字符串或正则表达式进行匹配，具体取决于所选的运算符。