1. 课程导论与架构总览
1.1 自动化运维的发展趋势
传统运维模式正经历从“被动救火”向“主动预防与自愈”的深刻转变。随着微服务架构与容器化部署的普及,运维对象数量呈指数级增长,人工处理告警已无法满足业务连续性的要求。当前自动化运维的核心趋势可归纳为以下四个方向:
| 趋势方向 | 核心特征 | 典型技术栈 |
|---|---|---|
| 可观测性驱动 | 指标、日志、链路追踪三位一体,数据驱动决策 | Prometheus + Loki + Tempo |
| 声明式配置 | 期望状态与当前状态自动调和,消除配置漂移 | Ansible / Terraform / Kubernetes |
| 事件驱动自动化 | 告警事件触发预定义修复流程,减少人工介入 | Alertmanager Webhook + Ansible Tower |
| 闭环自愈 | 检测 → 诊断 → 决策 → 执行 → 验证,形成自动化闭环 | Prometheus + Ansible + 健康检查 |
关键认知: 告警驱动自愈并非取代运维人员,而是将重复性、标准化的故障处理流程交给机器,让工程师专注于架构优化与复杂故障根因分析。
1.2 Prometheus 与 Ansible 生态介绍
1.2.1 Prometheus 生态
Prometheus 是云原生计算基金会(CNCF)的毕业项目,已成为指标监控的事实标准。其生态核心组件包括:
- Prometheus Server:负责指标采集、存储与查询(PromQL)。
- Alertmanager:处理告警路由、去重、静默与通知发送。
- Exporters:将第三方系统指标转换为 Prometheus 格式(如 node_exporter、blackbox_exporter)。
- Pushgateway:支持短生命周期任务的指标推送。
- Grafana:可视化仪表盘,与 Prometheus 深度集成。
1.2.2 Ansible 生态
Ansible 是 Red Hat 出品的无代理自动化引擎,通过 SSH 或 WinRM 执行任务。其生态核心组件包括:
- Ansible Core:执行引擎,支持 Playbook 与 Ad-Hoc 命令。
- Ansible Tower / AWX:企业级 Web UI,提供 RBAC、作业调度与 REST API。
- Ansible Galaxy:社区角色与集合的共享仓库。
- Ansible Modules:内置 1000+ 模块,覆盖系统、网络、云、容器等领域。
生态互补: Prometheus 负责“发现异常”,Ansible 负责“修复异常”。两者通过 Webhook 或 API 集成,形成完整的告警驱动自愈链路。
1.3 告警驱动自愈的核心架构
下图展示了本课程的核心架构:Prometheus 采集指标并触发告警,Alertmanager 通过 Webhook 将告警转发至自动化平台,Ansible 执行预定义的修复 Playbook,最终由健康检查验证恢复状态。
1.4 核心工作流程
告警驱动自愈的完整工作流程分为六个阶段,每个阶段都有明确的输入与输出:
- 指标采集阶段:Prometheus 通过 Exporters 或直接拉取方式,按固定间隔(如 15s)采集目标系统的 CPU、内存、磁盘、网络等指标。
- 告警评估阶段:Prometheus 根据预定义的告警规则(如
node_cpu_seconds_total > 0.9)评估指标是否触发阈值。 - 告警通知阶段:Alertmanager 接收告警后,根据路由配置进行分组、去重,并通过 Webhook 发送至 Ansible 自动化平台。
- 修复决策阶段:Ansible Tower/AWX 接收 Webhook 后,根据告警标签(如
severity=critical、service=nginx)匹配对应的修复 Playbook。 - 修复执行阶段:Ansible 在目标主机上执行 Playbook,例如重启服务、清理磁盘空间、调整配置参数等。
- 验证闭环阶段:执行完成后,Prometheus 再次采集指标,确认告警是否恢复。若未恢复,则触发升级策略或通知人工介入。
避坑提示: 修复 Playbook 必须包含幂等性设计,避免重复执行导致系统状态异常。建议在 Playbook 开头添加条件判断,仅当故障状态持续时才执行修复操作。
1.5 课程实验环境概览
本课程将基于以下实验环境进行实战演练:
| 组件 | 版本 | 部署方式 | 用途 |
|---|---|---|---|
| Prometheus | 2.53.x | Docker / 二进制 | 指标采集与告警评估 |
| Alertmanager | 0.27.x | Docker / 二进制 | 告警路由与 Webhook 转发 |
| Ansible Core | 2.17.x | pip 安装 | Playbook 执行引擎 |
| Ansible AWX | 24.6.x | Kubernetes / Docker Compose | Webhook 接收与作业调度 |
| node_exporter | 1.8.x | 二进制 | 主机指标暴露 |
| Grafana | 11.2.x | Docker | 指标可视化与告警展示 |
学习建议: 建议在虚拟机或云主机上搭建实验环境,至少准备 2 台 Linux 节点(1 台控制节点 + 1 台受管节点),以便完整演练告警驱动自愈的全流程。