菜单
Grafana Cloud Enterprise 开源

告警通知分组

Grafana Alerting 中的分组功能允许您将相关的告警批量合并到较少的通知中。这对于向第一响应者(例如值班工程师)发送通知尤其重要,因为在短时间内接收大量通知可能会令人不知所措。在某些情况下,这可能会对第一响应者应对事件的能力产生负面影响。例如,考虑一个许多系统都发生故障的大规模中断。在这种情况下,分组可以让您只接到 1 个电话,而不是 100 个电话。

提示

有关分组的实际示例,请参阅我们的分组入门教程

通知分组

分组将特定时间段内相似的告警实例合并为一个通知,从而减少告警噪音。

通知策略中,您可以配置如何将多个告警合并到单个通知中

  • Group by 选项指定了策略中传入告警的分组标准。默认按告警规则分组。
  • 定时选项决定何时以及多久发送一次通知。
A diagram about the components of a notification policy, including labels and groups

如果告警实例在 Group by 选项中配置的标签具有完全相同的标签值,则它们会被分组在一起。

例如,给定 Group by 选项设置为 team 标签

  • alertname:foo, team=frontendalertname:bar, team=frontend 在一个组中。
  • alertname:foo, team=frontendalertname:qux, team=backend 在另一个组中。

按告警规则或标签分组

默认情况下,Grafana 中的通知策略按告警规则分组告警。具体来说,它们使用 alertnamegrafana_folder 标签进行分组,因为告警规则名称在不同文件夹中不是唯一的。

如果您想按其他标签而不是告警规则对告警进行分组,请将 Group by 选项更改为任何其他标签组合。

所有告警合并为一个组

如果您想将通知策略处理的所有告警合并到一个组中(而不按告警规则或其他标签分组),请在默认策略中将 Group by 留空。

禁用分组

如果您希望将每个告警作为单独的通知接收,可以通过按一个特殊标签 ... 进行分组来实现,确保不存在其他标签。

定时选项

在通知策略中,您还可以配置每个告警组的通知发送频率。通知策略中的组有三个不同的计时器

这些计时器减少了发送的通知数量。通过延迟通知的发送,可以将传入的告警合并为一个通知,而不是发送很多通知。

A basic sequence diagram of the the notification policy timers
通知策略计时器的基本序列图

组等待 (Group wait)

默认:30 秒

组等待是 Grafana 在发送新告警组的第一个通知之前等待的持续时间。

此选项有助于减少在短时间内发生的关联告警发送的通知数量。组等待时间越长,其他告警就有更多时间被包含在新组的初始通知中。组等待时间越短,第一个通知发送得越早,但也可能遗漏一些告警。

如果在持续时间过去之前告警已解决,则不会发送该告警的通知。这减少了告警闪烁带来的噪音。

示例

考虑一个通知策略

  • 匹配所有带有 team 标签的告警实例 - 匹配标签等于 team=~.+
  • team 标签分组通知 - 每个不同的 team 对应一个组。
  • 将组等待计时器设置为 30s
时间传入告警实例通知策略组实例数量
00:00alertname=f1 team=frontendfrontend1启动 frontend 组的组等待计时器。
00:10alertname=f2 team=frontendfrontend2
00:20alertname=b1 team=backendbackend1启动 backend 组的组等待计时器。
00:30*frontend2组等待时间已过。
发送初始通知,报告 2 个告警。
00:35alertname=b2 team=backendbackend2
00:40alertname=b3 team=backendbackend3
00:50*backend3组等待时间已过。
发送初始通知,报告 3 个告警。

组间隔 (Group interval)

默认:5 分钟

如果由于组等待而导致告警未能及时包含在第一个通知中,它将在组间隔时间后包含在后续通知中。

组间隔是在发送关于组变化的通知之前等待的持续时间。当发生以下情况时,组会发生变化:

  • 新的触发告警被添加到组中。
  • 现有告警已解决。

示例

以下是前一个示例中的相关摘录

时间传入告警实例通知策略组实例数量
00:30*frontend2组等待时间已过,并启动组间隔计时器。
发送初始通知,报告 2 个告警。
00:50*backend3组等待时间已过,并启动组间隔计时器。
发送初始通知,报告 3 个告警。

下面是示例的延续,将组间隔计时器设置为 5 分钟

时间传入告警实例通知策略组实例数量
01:30alertname=f3 team=frontendfrontend3
02:30alertname=f4 team=frontendfrontend4
05:30*frontend4组间隔时间已过并重置计时器。
发送一个通知,报告 4 个告警。
05:50*backend3组间隔时间已过并重置计时器。
组无变化,不发送通知。
08:00alertname=f4 team=backendbackend4
10:30*frontend4组间隔时间已过并重置计时器。
组无变化,不发送通知。
10:50*backend4组间隔时间已过并重置计时器。
发送一个通知,报告 4 个告警。

工作原理

一旦发送了新告警组的第一个通知,组间隔计时器便会启动。

当组间隔计时器到期时,系统会重置组间隔计时器,并且仅在组发生变化时发送通知。此过程会重复,直到不再有告警为止。

需要注意的是,告警实例在解决并通知其状态变化后会退出该组。当不再有告警时,该组将被删除,然后组等待计时器将再次处理下一个传入告警的第一个通知。

重复间隔 (Repeat interval)

默认:4 小时

重复间隔作为一个提醒,告知组中的告警仍在触发。

重复间隔计时器决定了如果组自上次通知以来没有发生变化,通知发送(或重复)的频率。

工作原理

每次组间隔重置时,都会评估重复间隔。如果告警组没有发生变化,并且自上次通知以来的时间长于重复间隔,则会发送通知,作为提醒告警仍在触发的信息。

重复间隔不仅必须大于或等于组间隔,还必须是组间隔的倍数。如果重复间隔不是组间隔的倍数,则会强制转换为倍数。例如,如果您的组间隔为 5 分钟,而重复间隔为 9 分钟,则重复间隔将向上取整到最接近 5 的倍数,即 10 分钟。

重复间隔的最大持续时间为 5 天,这受到 Grafana 中 notification_log_retention 设置默认值的限制。

示例

以下是前一个示例中的相关摘录

时间传入告警实例通知策略组实例数量
05:30*frontend4组间隔重置。
发送最后的通知。
10:50*backend4组间隔重置。
发送最后的通知。

下面是示例的延续,将重复间隔计时器设置为 4 小时

时间传入告警实例通知策略组实例数量
04:05:30frontend4组间隔重置。自上次通知以来经过的时间不长于重复间隔。
04:10:30frontend4组间隔重置。自上次通知以来经过的时间长于重复间隔。
发送一个通知,提醒 4 个正在触发的告警。
04:10:50backend4组间隔重置。自上次通知以来经过的时间不长于重复间隔。
04:15:50backend4组间隔重置。自上次通知以来经过的时间长于重复间隔。
发送一个通知,提醒 4 个正在触发的告警。