Taka5780/safe-auto-healing
GitHub: Taka5780/safe-auto-healing
一个基于 AWS 的安全自动修复系统,通过受控自动化与人工审核降低事件的平均修复时间(MTTR)。
Stars: 0 | Forks: 0
# 安全自动修复系统(AWS × Python)
## ■ 概述
本项目是一个基于 AWS 构建的事件响应自动化系统。
其主要目标是通过自动化恢复流程来降低平均修复时间(MTTR)。
并非完全自动化所有环节,而是专注于**安全且可控的自动化**,在必要时保留人工决策。
## ■ 背景
在实际运维中,常见问题包括:
* 因未收到邮件告警导致的响应延迟
* 事件处理缺乏可见性
* 恢复时间因操作员不同而不一致
为解决这些问题,本系统从检测到恢复重新设计了工作流程,提供**更快、更可靠的响应流程**。
## ■ 概念
* 不消除告警(故障不可避免)
* 减少 MTTR 而非抑制事件
* 仅自动化安全且可重复的操作
* 在必要时保持人工参与
## ■ 架构
* EC2(目标实例)
* CloudWatch(监控与告警)
* Lambda(自动修复逻辑)
* Systems Manager(SSM)(远程命令执行)
* Slack(通知)
## ■ 流程
CloudWatch 告警
↓
Lambda(Python)
↓
通过 SSM 重启 Nginx
↓
HTTP 健康检查
↓
Slack 通知
## ■ 场景 1:自动修复(L1)
### ■ 描述
自动恢复轻微且易于理解的故障。
### ■ 工作流程
1. CloudWatch 检测到异常(如 CPU 飙升或 HTTP 失败)
2. 触发 Lambda 函数
3. 通过 SSM 重启 Nginx
4. HTTP 健康检查验证恢复
5. 结果发送至 Slack
### ■ Slack 通知示例
```
[Auto-Healing SUCCESS]
Time: 2026-04-17 17:52:05
Instance: i-xxxxxxxxxxxx
Alarm: safe-auto-healing-nginx-down
Action: Nginx Restart
Result: OK
```
## ■ 关键特性
### 1. 安全目标控制(基于标签)
```
auto-healing=true
```
仅带有此标签的实例有资格进行自动修复。
### 2. SSM 执行验证
处理中间状态,例如:
```
Pending / InProgress
```
确保仅在操作完成后才执行后续动作。
### 3. 重试机制
```
Up to 5 health check attempts
```
提高对临时故障的恢复能力。
### 4. 结果可见性
* 通过 Slack 发送成功/失败通知
* 失败时包含错误追踪信息
## ■ 目录结构
```
safe-auto-healing/
├── infra/
│ ├── terraform/
│ └── ansible/
├── app/
│ └── lambda/
├── config/
└── README.md
```
## ■ 技术栈
* Python
* AWS Lambda
* Amazon CloudWatch
* AWS Systems Manager(SSM)
* Terraform
* Ansible
* Slack Webhook
## ■ 后续改进
* 场景 2:人工参与响应
* 场景 3:安全阻断(不可自动化的场景)
* 冷却时间机制
* 事件历史追踪
## ■ 总结
本系统实现:
* 更快速的事件响应
* 降低 MTTR
* 安全且可控的自动化
核心理念是:
标签:AWS, CloudWatch, DPI, EC2, IaC, Lambda, MTTR优化, Nginx重启, Python, Slack通知, SSM, 人机协同, 健康检查, 受控自动化, 无后门, 标签过滤, 系统提示词, 系统重启, 自动化运维, 自动恢复, 运维监控, 逆向工具