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 告警自愈与复测整体架构

下图展示了从指标采集到自愈复测的完整数据流与组件关系:

告警自愈与复测整体架构 Prometheus Server 指标采集 & 告警评估 Alertmanager 告警去重 / 路由 / 静默 Webhook Receiver 接收告警 JSON 载荷 自愈剧本引擎 Ansible / Shell / API 复测模块 PromQL / HTTP 探测 目标系统 K8s / 主机 / 中间件 复测失败可触发回滚或二次自愈 形成完整闭环

1.6 课程核心能力模型

完成本课程后,你将具备以下核心能力:

  1. 告警标准化:设计包含自愈标签(autoheal=true)的Prometheus告警规则。
  2. 剧本开发:编写幂等、可重入的自愈Shell/Ansible剧本。
  3. 复测策略设计:根据故障类型选择PromQL复测或HTTP复测,并设置合理的超时与重试。
  4. 混沌验证:使用Chaos Mesh或Litmus注入故障,验证自愈剧本的有效性。
  5. 灰度自愈:在灰度发布场景中,实现新版本异常时的自动回滚与复测。
重要提醒: 自愈剧本必须包含“熔断”机制。当同一目标在短时间内连续触发自愈超过3次时,应自动停止自愈并升级为人工告警,避免“自愈风暴”导致系统雪崩。