4. GameDay 演练规划:演练场景设计、容量基线确定、预期水位阈值设定

GameDay 演练的核心目标是通过模拟真实故障场景,验证容量水位监控的有效性、告警链路的可靠性以及应急响应流程的完备性。本章聚焦于演练前的规划阶段,明确“练什么、基线在哪、阈值怎么定”三个关键问题。

4.1 演练场景设计

场景设计应基于历史故障、容量瓶颈和业务峰值特征,避免“为演练而演练”。推荐采用以下三类场景模板:

场景类型 典型触发条件 预期影响范围 演练目标
流量突增 CPU / 请求量 / 连接数 在 5 分钟内线性增长 200% 单集群 → 上游 LB → 下游缓存 验证自动扩缩容策略与限流降级
资源降级 模拟节点宕机 / 磁盘 IO 限速 / 网络延迟 100ms 局部服务 → 依赖链雪崩 测试熔断、重试与优雅降级
数据积压 消息队列堆积量 10 分钟内超过 100 万条 消费者组 → 数据库写入 → 报表延迟 检查消费能力与背压机制
设计建议: 每个 GameDay 只聚焦 1 个场景,避免多故障叠加导致根因难以定位。场景脚本需包含“注入方式”、“持续时间”、“预期行为”和“回滚方案”。

4.2 容量基线确定

容量基线是判断“是否异常”的参考坐标系。基线数据应取自过去 30 天同一时间窗口的 P50 / P95 / P99 统计值,并排除已知故障时段。

  • 计算口径: 按业务高低峰时段分别聚合,例如 10:00-12:00 为高峰窗口,02:00-05:00 为低谷窗口。
  • 关键指标: CPU 使用率、内存使用率、磁盘 IOPS、网络吞吐量、请求延迟 P99、队列深度。
  • 基线存储: 在 Grafana 中通过 avg_over_time(metric[30d]) 或引用外部时序数据库的基线表。
# PromQL 示例:计算过去 30 天同一小时 CPU 使用率的 P95 基线
quantile_over_time(0.95,
  node_cpu_seconds_total{mode="user"}[30d]
) by (instance)
常见误区: 直接使用全量历史数据的平均值作为基线,会掩盖业务周期性特征。必须按“星期几 + 小时”分桶,例如“周一 10:00 的 P95 CPU”。

4.3 预期水位阈值设定

阈值设定采用“基线 + 偏移量”模型,而非固定值。偏移量根据业务容忍度分为三级:

水位等级 阈值公式 Grafana 告警颜色 响应动作
Warning 基线 P95 × 1.2 黄色 通知值班 SRE,人工确认
Critical 基线 P95 × 1.5 红色 触发自动扩缩容 / 限流
Emergency 基线 P99 × 1.5 深红 启动应急预案,切换流量

在 GameDay 演练中,需提前在 Grafana 面板上标注“预期水位线”,以便演练过程中实时对比实际水位与预期阈值的偏差。

4.4 演练规划流程总览

以下 SVG 图展示了从场景设计到阈值设定的完整规划流程,以及各环节之间的输入输出关系。

GameDay 演练规划流程 场景设计 流量突增 / 资源降级 / 数据积压 容量基线确定 P50 / P95 / P99 分桶统计 水位阈值设定 Warning / Critical / Emergency Grafana 面板配置 预期水位线 + 告警规则 GameDay 演练执行 注入故障 → 观察水位 → 验证告警 关键产出 场景脚本 / 基线报告 / 阈值配置

4.5 演练前 Checklist

在正式执行 GameDay 前,建议逐项确认以下准备项:

  1. 场景脚本已评审: 确认注入方式不会影响生产环境(若为生产演练需有隔离措施)。
  2. 基线数据已加载: Grafana 面板中已配置基线参考线,且数据源可正常查询。
  3. 阈值已生效: 告警规则已启用,通知渠道(钉钉/邮件/PagerDuty)已验证。
  4. 回滚方案就绪: 演练终止条件明确,回滚脚本或操作手册可立即执行。
  5. 观察者就位: 至少 1 人负责监控 Grafana 面板,1 人负责记录时间线。
演练纪律: 演练期间禁止修改告警规则或基线配置,所有变更需在演练结束后通过变更流程执行。演练记录应包含“预期水位 vs 实际水位”的对比截图,作为后续容量规划的依据。