1. 课程导论
在云原生与微服务架构日益复杂的今天,运维团队每天可能面对成千上万条告警。传统“告警→人工响应→排查→恢复”的模式已无法满足业务对高可用性的要求。告警自愈与复测正是解决这一矛盾的核心手段。
1.1 为什么需要告警自愈?
告警自愈是指系统在检测到异常指标后,自动执行预定义的恢复动作(如重启服务、扩容副本、清理日志),无需人工介入。其核心价值体现在:
- 缩短MTTR(平均修复时间):从分钟级降至秒级。
- 减少人为失误:标准化剧本避免操作遗漏或误操作。
- 释放运维人力:让SRE聚焦于架构优化与故障根因分析。
1.2 复测:自愈闭环的最后一块拼图
执行自愈动作后,系统是否真的恢复了?复测(Re-test)机制通过再次查询Prometheus指标或发送探测请求,验证恢复效果。只有通过复测,自愈流程才算真正闭环。
关键概念: 自愈 ≠ 恢复。没有复测的自愈是“盲人摸象”,可能造成故障扩散或二次伤害。
1.3 课程目标与学习路径
本课程旨在帮助学员掌握从告警触发到自愈执行、再到复测验证的完整闭环能力。学习路径分为四个阶段:
| 阶段 | 核心内容 | 产出物 |
|---|---|---|
| 基础篇 | Prometheus告警规则、Alertmanager路由、Webhook接收 | 可触发的告警源 |
| 自愈篇 | Ansible/Shell剧本编写、Kubernetes API调用、自愈动作封装 | 可执行的恢复剧本 |
| 复测篇 | PromQL二次查询、HTTP健康检查、复测超时与重试策略 | 可验证的复测逻辑 |
| 实战篇 | 完整剧本复测、混沌工程注入、灰度发布自愈 | 生产级自愈流水线 |
1.4 前置知识要求
为顺利学习本课程,建议学员具备以下基础:
- Prometheus基础:理解指标类型、PromQL基础查询、告警规则配置。
- Linux操作:熟悉Shell脚本、crontab、systemd服务管理。
- 容器与Kubernetes基础:了解Pod、Deployment、Service概念,能使用kubectl。
- 网络基础:理解HTTP协议、RESTful API调用、JSON数据格式。
学习建议: 如果对PromQL不熟悉,建议先花2小时复习《Prometheus官方文档-查询篇》。本课程所有复测环节都依赖精确的PromQL表达式。
1.5 告警自愈与复测整体架构
下图展示了从指标采集到自愈复测的完整数据流与组件关系:
1.6 课程核心能力模型
完成本课程后,你将具备以下核心能力:
- 告警标准化:设计包含自愈标签(
autoheal=true)的Prometheus告警规则。 - 剧本开发:编写幂等、可重入的自愈Shell/Ansible剧本。
- 复测策略设计:根据故障类型选择PromQL复测或HTTP复测,并设置合理的超时与重试。
- 混沌验证:使用Chaos Mesh或Litmus注入故障,验证自愈剧本的有效性。
- 灰度自愈:在灰度发布场景中,实现新版本异常时的自动回滚与复测。
重要提醒: 自愈剧本必须包含“熔断”机制。当同一目标在短时间内连续触发自愈超过3次时,应自动停止自愈并升级为人工告警,避免“自愈风暴”导致系统雪崩。