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, 人机协同, 健康检查, 受控自动化, 无后门, 标签过滤, 系统提示词, 系统重启, 自动化运维, 自动恢复, 运维监控, 逆向工具