智能降噪

通过五重降噪引擎大幅减少告警噪音,让团队专注于真正的故障

概述

告警噪音是 On-Call 团队面临的最大挑战之一。大量重复、低优先级或短暂性告警会淹没真正重要的问题,导致告警疲劳和响应延迟。

1Duty 提供五重降噪引擎,从不同维度对告警进行过滤和优化:

  1. 告警聚合 - 将相同或相似的告警合并为一个事件
  2. 排除规则 - 直接丢弃不需要关注的告警
  3. 静默策略 - 在特定条件或时间段内抑制通知
  4. 抖动检测 - 识别并抑制频繁告警恢复的抖动场景
  5. 自动关闭 - 超时或满足条件时自动关闭事件

五重降噪引擎协同工作,可减少 90% 以上的告警噪音。

告警聚合 (Aggregation)

告警聚合将相同或相似的告警合并为同一个事件,避免相同问题重复创建事件。1Duty 提供三种聚合模式:

智能聚合

系统基于告警标题的哈希值自动判断告警是否相同。标题相同的告警会被聚合到同一事件中。这是最简单的聚合方式,无需额外配置。

自定义规则聚合

通过 Aviator 表达式自定义聚合 Key,支持更灵活的聚合策略。聚合 Key 相同的告警将被合并到同一事件。

## 示例:按标题和主机名组合聚合
title + '_' + host

## 示例:按服务名和告警级别聚合
service + '_' + severity

## 示例:按告警来源聚合
channelName + '_' + webHookName

不聚合

每条告警都会创建一个独立的事件。适用于每条告警都需要单独处理的场景。

聚合窗口

聚合窗口定义了告警合并的时间范围,可设置为 1 - 1440 分钟(即最长 24 小时)。在聚合窗口内,具有相同聚合 Key 的告警将合并到同一个事件中。窗口过期后,相同 Key 的新告警将创建新的事件。

建议根据告警的恢复周期设置聚合窗口。例如,如果一个告警通常在 30 分钟内恢复,可以将聚合窗口设置为 60 分钟。

排除规则 (Exclusion)

排除规则用于直接丢弃满足条件的告警,这些告警不会创建事件,也不会触发通知。适用于已知的无效告警或不需要关注的低优先级告警。

普通条件

通过字段 + 操作符 + 值的方式定义匹配条件,支持以下操作符:

操作符说明示例
包含字段值包含指定字符串title 包含 "test"
不包含字段值不包含指定字符串title 不包含 "heartbeat"
等于字段值完全等于指定字符串severity 等于 "info"
不等于字段值不等于指定字符串severity 不等于 "critical"
正则匹配字段值匹配正则表达式title 正则匹配 "test-.*-dev"
正则不匹配字段值不匹配正则表达式host 正则不匹配 "prod-.*"

Aviator 脚本

当普通条件无法满足需求时,可以使用 Aviator 表达式编写自定义排除逻辑:

## 示例:排除测试环境的 info 级别告警
string.contains(title, "test") && severity == "info"

## 示例:排除特定主机的磁盘告警
string.startsWith(host, "backup-") && string.contains(title, "disk")

多条件关系

当配置多条排除规则时,各规则之间为 OR(或)关系,即满足任意一条规则的告警都将被排除。

静默策略 (Silence)

静默策略与排除规则不同:满足静默条件的告警仍然会创建事件,但不会发送通知。适用于计划内维护、已知问题等场景。

静默时长

静默时长定义了匹配告警被静默的持续时间,可设置为 1 - 10080 分钟(即最长 7 天)。在静默时长内,同一事件的后续告警也不会触发通知。

时间段限制

可以为静默策略配置生效的时间段,实现更精准的静默控制:

例如,可以配置"每周六、周日全天静默非严重告警"或"每天凌晨 2:00-4:00 静默数据库维护告警"。

条件配置

静默策略的条件配置方式与排除规则相同,支持普通条件和 Aviator 脚本,多条件之间为 OR 关系。

抖动检测 (Jitter)

抖动检测用于识别频繁触发又恢复的告警场景。当一个告警在短时间内反复触发,说明系统可能处于临界状态,持续发送通知只会增加噪音而无法帮助解决问题。

工作原理

  1. 系统持续监控每个事件在指定时间窗口内的告警次数
  2. 当告警次数超过设定的阈值时,事件进入抖动状态
  3. 在抖动状态期间,该事件的新告警将被抑制通知,不再打扰值班人员
  4. 抑制时长结束后,事件恢复正常状态,新告警将再次触发通知

参数配置

参数说明取值范围
时间窗口检测告警频率的时间范围分钟
阈值窗口内告警次数达到此值即触发抖动
抑制时长进入抖动状态后抑制通知的持续时间分钟

例如,设置时间窗口为 10 分钟、阈值为 5 次、抑制时长为 30 分钟,表示:如果某事件在 10 分钟内触发 5 次告警,则在接下来 30 分钟内抑制该事件的通知。

自动关闭 (Auto-Close)

自动关闭功能可以在事件超时或满足特定条件时自动将事件关闭,减少人工干预,保持事件列表清洁。

超时关闭

设置事件的最大存活时间,超过指定时长的事件将被自动关闭。超时时长可设置为 0 - 168 小时(即最长 7 天)。设置为 0 表示不启用超时关闭。

条件关闭

通过条件配置自动关闭事件,支持两种方式:

## 示例:当告警级别降为 info 且状态为 resolved 时自动关闭
severity == "info" && status == "resolved"

执行机制

系统每 5 分钟执行一次自动关闭检查,扫描所有未关闭的事件,对满足条件的事件执行自动关闭操作。

自动关闭的事件会记录操作来源为"系统自动关闭",你可以在事件详情的时间线中查看完整的关闭记录。

降噪记录

所有被降噪引擎处理的告警都会保留完整的记录,确保告警数据不丢失、可追溯。你可以在集成详情页面中查看以下信息:

定期查看降噪记录有助于优化降噪规则。如果发现重要告警被误排除或误静默,可以及时调整规则配置。