4. 变更窗口平台概述:变更窗口定义、变更生命周期、变更与告警的关联关系
变更窗口平台是连接运维操作与监控告警系统的核心枢纽。它定义了“何时可以变更”、“变更如何流转”以及“变更期间告警如何处理”三大关键问题。理解变更窗口的定义、生命周期及其与告警的关联关系,是实现告警路由自动配置的基础。
4.1 变更窗口定义
变更窗口(Change Window)是指在预定的、经过审批的时间段内,允许对生产环境进行计划性变更操作的时间区间。其核心要素包括:
| 要素 | 定义 | 示例 |
|---|---|---|
| 窗口名称 | 唯一标识该变更窗口的语义化名称 | prod-weekly-maintenance |
| 生效时间 | 窗口开始与结束的精确时间(含时区) | 2025-04-15 02:00 UTC ~ 2025-04-15 05:00 UTC |
| 重复规则 | 窗口是否周期性出现(Cron 表达式) | 0 2 * * 3(每周三凌晨2点) |
| 影响范围 | 该窗口覆盖的服务、主机或集群 | service:payment-api, service:order-db |
| 审批状态 | 窗口是否已通过变更咨询委员会(CAB)审批 | approved / pending |
| 关联策略 | 窗口期间应用的告警静默或路由策略 | silence-critical-5min |
最佳实践:变更窗口应尽量与业务低峰期对齐。对于全球化服务,建议使用 UTC 时间定义窗口,并在平台层自动转换为各区域运维团队的本地时间。
4.2 变更生命周期
一个完整的变更从提出到关闭,通常经历以下六个阶段。每个阶段都与告警策略的调整时机紧密相关。
- 申请(Request):变更发起人提交变更单,明确变更内容、影响范围、回滚方案及期望窗口。
- 审批(Approval):CAB 或自动化规则对变更进行风险评估,批准或驳回窗口申请。
- 就绪(Ready):窗口时间到达前,平台自动预加载告警静默策略,等待变更开始。
- 执行(Executing):变更操作在窗口内进行,关联告警被自动抑制或路由至变更群组。
- 验证(Verification):变更完成后,平台自动解除告警抑制,观察一段时间内的告警水位以验证变更效果。
- 关闭(Closed):变更单归档,所有临时策略清理干净,恢复常规告警路由。
4.3 变更与告警的关联关系
变更窗口与告警系统的关联,本质上是时间维度与空间维度的交叉绑定。平台工程需要在这两个维度上建立精确的映射关系。
4.3.1 时间维度关联
- 窗口开启:触发告警静默策略的激活,对窗口覆盖范围内的服务,将告警通知从“值班组”切换至“变更执行组”。
- 窗口关闭:触发告警静默策略的解除,恢复常规告警路由。若变更未完成,需触发“窗口超时”告警。
- 窗口重叠:当多个窗口时间重叠时,按窗口优先级(如紧急变更 > 常规变更)决定告警路由策略。
4.3.2 空间维度关联
- 服务粒度:窗口精确绑定到服务或 API,非窗口覆盖的服务告警不受影响。
- 主机粒度:对于基础设施变更,窗口绑定到特定主机或 Pod 标签选择器。
- 告警类型:可配置窗口期间仅抑制
P0/P1级告警,保留P2/P3级告警用于变更验证。
4.4 关联关系配置示例
以下是一个典型的变更窗口与告警路由策略绑定配置(YAML 格式),展示了如何在平台工程中定义这种关联关系:
apiVersion: change-window.platform.io/v1
kind: ChangeWindow
metadata:
name: payment-api-weekly
spec:
schedule: "0 2 * * 3" # 每周三 02:00 UTC
duration: 180m # 窗口持续 3 小时
timezone: "UTC"
scope:
services:
- payment-api
- payment-db
clusters:
- prod-us-east
alertPolicy:
mode: "suppress" # 抑制模式
severityOverrides:
- from: "P0"
to: "P1" # 将 P0 降级为 P1,避免触发电话
routeTarget: "change-team" # 告警路由至变更执行群组
postWindow:
observationPeriod: 30m # 窗口关闭后观察 30 分钟
autoResolve: true # 自动解除抑制
approval:
required: true
approvers: ["sre-lead", "payment-owner"]
常见陷阱:变更窗口的告警抑制策略不应是“一刀切”的静默。必须保留 变更失败、窗口超时、回滚触发 等关键告警的透传能力,否则变更事故可能被静默掩盖,造成更大的故障。