Keep 的维护窗口功能为在计划维护期间或其他计划事件期间管理告警噪音提供了关键机制。通过定义维护窗口规则,用户可以抑制这些时期中不相关的告警,确保只有可操作的告警能到达运维团队。
简介
在动态 IT 环境中,某些告警是预期的且不应触发事件响应,这是很常见的。Keep 的维护窗口功能允许用户定义特定规则,根据各种条件(如时间窗口或告警属性)临时抑制告警。这有助于防止不必要的告警疲劳,并确保团队能够专注于关键问题。
工作原理
- 维护窗口规则定义:用户定义维护窗口规则,指定应抑制告警的条件。
- 条件规范:每个维护窗口规则关联一个 CEL(通用表达式语言)查询,用于定义抑制条件。
- 时间窗口配置:维护窗口规则可以设置为特定的开始和结束时间,或基于相对持续时间。
- 告警抑制:在维护窗口规则的有效期间,任何匹配定义条件的告警要么被抑制且不在告警提要中显示,要么在提要中以抑制状态显示(这是可配置的)。
实际示例
假设您的团队计划进行数据库升级,这可能会触发大量非关键告警。您可以创建一个维护窗口规则,在升级窗口期间抑制来自数据库服务的告警。这确保您的运维团队不会被非可操作告警淹没,使他们能够专注于更关键的问题。
核心概念
- 维护窗口规则:定义何时以及应抑制哪些告警的配置,基于时间窗口和条件。
- CEL 查询:用于指定应抑制告警条件的查询语言。例如,CEL 查询可能会在维护窗口期间抑制来源为特定服务的告警。
- 时间窗口:维护窗口规则有效的特定开始和结束时间或相对持续时间。
- 告警抑制:在指定时间窗口期间忽略匹配维护窗口规则条件的告警的过程。
维护窗口中基于状态的过滤
在 Keep 中,某些告警状态会被维护窗口规则自动忽略。具体来说,具有 RESOLVED 和 ACKNOWLEDGED 状态的告警不会被维护窗口规则抑制。这是故意的,以确保解决告警仍能正确关闭或更新活动事件。
为什么某些状态被忽略?
• RESOLVED 告警:这些告警表示问题已解决。通过允许这些告警绕过维护窗口规则,Keep 确保与告警相关的任何活动事件都能被正确关闭,保持告警生命周期的完整性。
• ACKNOWLEDGED 告警:这些告警已被运维人员确认,表示他们正在处理。在维护窗口中忽略这些告警可确保运维人员能够跟踪事件进度并采取必要的行动而不受干扰。
通过从维护窗口抑制中排除这些状态,Keep 允许在维护窗口期间持续准确地管理告警,确保解决过程不会中断。
创建维护窗口规则
要创建维护窗口规则:
- 定义维护窗口名称和描述:为维护窗口规则提供名称和可选描述,以便轻松识别其目的。
- 指定 CEL 查询:使用 CEL 定义应抑制告警的条件(例如,
source == "database")。 - 设置时间窗口:选择特定的开始和结束时间,或定义维护窗口的相对持续时间。
- 启用规则:决定规则是立即生效还是计划将来使用。
最佳实践
- 提前规划维护窗口:为已知的维护窗口提前安排维护窗口期,以防止不必要的告警。
- 使用特定条件:定义精确的 CEL 查询,以确保只抑制预期的告警。
- 审查和更新维护窗口:定期审查活动的维护窗口规则,以确保它们仍然相关,并根据需要进行调整。
策略
为了处理维护窗口期间的告警,Keep 提供了一些策略来处理这些告警的处理方式:
1. 默认
维护窗口的默认行为是抑制匹配定义条件的告警。
2. 恢复状态
此策略基于以下前提:
TIP
在维护窗口内收到的告警必须被抑制,一旦维护窗口结束,告警必须恢复其之前的流程。
因此,将对新告警采取以下操作:
- 当收到告警时,会针对维护窗口规则对其进行检查。
- 如果告警匹配任何维护窗口规则,其状态将设置为"维护"。
- 跳过工作流和事件处理。
每隔 WATCHER_LAPSED_TIME 秒,观察者会检查每个具有"维护"状态的告警是否有任何活动的维护窗口。 如果是,将采取以下操作:
- 告警将交换其状态和之前的状态。
- 工作流、事件处理、推送器和预设通知将以与新告警相同的方式启动。
2.1 什么是过期的维护窗口?
对于维护窗口被认为是过期的,必须满足以下条件:
- 结束时间必须早于当前时间。
- 已启用标志必须设置为False。
2.2 使用恢复状态策略的具体条件是什么?
- 将 MAINTENANCE_WINDOW_STRATEGY 环境变量设置为 recover_previous_status。
- 在维护窗口规则配置中,"告警将以抑制状态显示"选项必须设置为True。
- 在维护窗口规则配置中,已启用标志必须设置为True。