告警通知分组
Grafana Alerting 中的分组功能允许您将相关的告警批量合并到较少的通知中。这对于向第一响应者(例如值班工程师)发送通知尤其重要,因为在短时间内接收大量通知可能会令人不知所措。在某些情况下,这可能会对第一响应者应对事件的能力产生负面影响。例如,考虑一个许多系统都发生故障的大规模中断。在这种情况下,分组可以让您只接到 1 个电话,而不是 100 个电话。
提示
有关分组的实际示例,请参阅我们的分组入门教程。
通知分组
分组将特定时间段内相似的告警实例合并为一个通知,从而减少告警噪音。
在通知策略中,您可以配置如何将多个告警合并到单个通知中
Group by
选项指定了策略中传入告警的分组标准。默认按告警规则分组。- 定时选项决定何时以及多久发送一次通知。

如果告警实例在 Group by
选项中配置的标签具有完全相同的标签值,则它们会被分组在一起。
例如,给定 Group by
选项设置为 team
标签
alertname:foo, team=frontend
和alertname:bar, team=frontend
在一个组中。alertname:foo, team=frontend
和alertname:qux, team=backend
在另一个组中。
按告警规则或标签分组
默认情况下,Grafana 中的通知策略按告警规则分组告警。具体来说,它们使用 alertname
和 grafana_folder
标签进行分组,因为告警规则名称在不同文件夹中不是唯一的。
如果您想按其他标签而不是告警规则对告警进行分组,请将 Group by
选项更改为任何其他标签组合。
所有告警合并为一个组
如果您想将通知策略处理的所有告警合并到一个组中(而不按告警规则或其他标签分组),请在默认策略中将 Group by
留空。
禁用分组
如果您希望将每个告警作为单独的通知接收,可以通过按一个特殊标签 ...
进行分组来实现,确保不存在其他标签。
定时选项
在通知策略中,您还可以配置每个告警组的通知发送频率。通知策略中的组有三个不同的计时器
- 组等待 (Group wait):在发送新告警组的第一个通知之前等待的时间。
- 组间隔 (Group interval):在发送关于告警组变化的通知之前等待的时间。
- 重复间隔 (Repeat interval):如果组自上次通知以来未发生变化,在发送通知之前等待的时间。
这些计时器减少了发送的通知数量。通过延迟通知的发送,可以将传入的告警合并为一个通知,而不是发送很多通知。

组等待 (Group wait)
默认:30 秒
组等待是 Grafana 在发送新告警组的第一个通知之前等待的持续时间。
此选项有助于减少在短时间内发生的关联告警发送的通知数量。组等待时间越长,其他告警就有更多时间被包含在新组的初始通知中。组等待时间越短,第一个通知发送得越早,但也可能遗漏一些告警。
如果在持续时间过去之前告警已解决,则不会发送该告警的通知。这减少了告警闪烁带来的噪音。
示例
考虑一个通知策略
- 匹配所有带有
team
标签的告警实例 - 匹配标签等于team=~.+
。 - 按
team
标签分组通知 - 每个不同的team
对应一个组。 - 将组等待计时器设置为
30s
。
时间 | 传入告警实例 | 通知策略组 | 实例数量 | |
---|---|---|---|---|
00:00 | alertname=f1 team=frontend | frontend | 1 | 启动 frontend 组的组等待计时器。 |
00:10 | alertname=f2 team=frontend | frontend | 2 | |
00:20 | alertname=b1 team=backend | backend | 1 | 启动 backend 组的组等待计时器。 |
00:30* | frontend | 2 | 组等待时间已过。 发送初始通知,报告 2 个告警。 | |
00:35 | alertname=b2 team=backend | backend | 2 | |
00:40 | alertname=b3 team=backend | backend | 3 | |
00:50* | backend | 3 | 组等待时间已过。 发送初始通知,报告 3 个告警。 |
组间隔 (Group interval)
默认:5 分钟
如果由于组等待而导致告警未能及时包含在第一个通知中,它将在组间隔时间后包含在后续通知中。
组间隔是在发送关于组变化的通知之前等待的持续时间。当发生以下情况时,组会发生变化:
- 新的触发告警被添加到组中。
- 现有告警已解决。
示例
以下是前一个示例中的相关摘录
时间 | 传入告警实例 | 通知策略组 | 实例数量 | |
---|---|---|---|---|
00:30* | frontend | 2 | 组等待时间已过,并启动组间隔计时器。 发送初始通知,报告 2 个告警。 | |
00:50* | backend | 3 | 组等待时间已过,并启动组间隔计时器。 发送初始通知,报告 3 个告警。 |
下面是示例的延续,将组间隔计时器设置为 5 分钟
时间 | 传入告警实例 | 通知策略组 | 实例数量 | |
---|---|---|---|---|
01:30 | alertname=f3 team=frontend | frontend | 3 | |
02:30 | alertname=f4 team=frontend | frontend | 4 | |
05:30* | frontend | 4 | 组间隔时间已过并重置计时器。 发送一个通知,报告 4 个告警。 | |
05:50* | backend | 3 | 组间隔时间已过并重置计时器。 组无变化,不发送通知。 | |
08:00 | alertname=f4 team=backend | backend | 4 | |
10:30* | frontend | 4 | 组间隔时间已过并重置计时器。 组无变化,不发送通知。 | |
10:50* | backend | 4 | 组间隔时间已过并重置计时器。 发送一个通知,报告 4 个告警。 |
工作原理
一旦发送了新告警组的第一个通知,组间隔计时器便会启动。
当组间隔计时器到期时,系统会重置组间隔计时器,并且仅在组发生变化时发送通知。此过程会重复,直到不再有告警为止。
需要注意的是,告警实例在解决并通知其状态变化后会退出该组。当不再有告警时,该组将被删除,然后组等待计时器将再次处理下一个传入告警的第一个通知。
重复间隔 (Repeat interval)
默认:4 小时
重复间隔作为一个提醒,告知组中的告警仍在触发。
重复间隔计时器决定了如果组自上次通知以来没有发生变化,通知发送(或重复)的频率。
工作原理
每次组间隔重置时,都会评估重复间隔。如果告警组没有发生变化,并且自上次通知以来的时间长于重复间隔,则会发送通知,作为提醒告警仍在触发的信息。
重复间隔不仅必须大于或等于组间隔,还必须是组间隔的倍数。如果重复间隔不是组间隔的倍数,则会强制转换为倍数。例如,如果您的组间隔为 5 分钟,而重复间隔为 9 分钟,则重复间隔将向上取整到最接近 5 的倍数,即 10 分钟。
重复间隔的最大持续时间为 5 天,这受到 Grafana 中 notification_log_retention
设置默认值的限制。
示例
以下是前一个示例中的相关摘录
时间 | 传入告警实例 | 通知策略组 | 实例数量 | |
---|---|---|---|---|
05:30* | frontend | 4 | 组间隔重置。 发送最后的通知。 | |
10:50* | backend | 4 | 组间隔重置。 发送最后的通知。 |
下面是示例的延续,将重复间隔计时器设置为 4 小时
时间 | 传入告警实例 | 通知策略组 | 实例数量 | |
---|---|---|---|---|
04:05:30 | frontend | 4 | 组间隔重置。自上次通知以来经过的时间不长于重复间隔。 | |
04:10:30 | frontend | 4 | 组间隔重置。自上次通知以来经过的时间长于重复间隔。 发送一个通知,提醒 4 个正在触发的告警。 | |
04:10:50 | backend | 4 | 组间隔重置。自上次通知以来经过的时间不长于重复间隔。 | |
04:15:50 | backend | 4 | 组间隔重置。自上次通知以来经过的时间长于重复间隔。 发送一个通知,提醒 4 个正在触发的告警。 |