Anujay-Saraf/incident-response-system

GitHub: Anujay-Saraf/incident-response-system

基于LangGraph和OpenAI多Agent协作的AI运维事件响应系统,自动完成日志与指标分析、根因推断、业务影响评估及报告生成的全流程。

Stars: 0 | Forks: 0

# AI 运维指挥中心 自主多 Agent 事件响应系统 ## 问题 企业的事件响应缓慢且依赖人工。工程师需要花费数小时筛选日志、指标和部署数据,以确定出了什么问题以及原因。 ## 解决方案 AI 运维指挥中心是一个多 Agent 系统,可协调跨日志、指标和部署的自主调查。六个专业 Agent 协同工作以: 1. **事件指挥官 (Incident Commander)** - 从多个来源加载事件数据 2. **日志分析 (Log Analysis)** - 检测错误模式和异常 3. **指标分析 (Metrics Analysis)** - 识别指标峰值和相关性 4. **RCA 分析 (RCA Analysis)** - 将调查结果综合为根本原因假设 5. **业务影响 (Business Impact)** - 计算受影响的用户和收入影响 6. **执行摘要 (Executive Summary)** - 生成工程和执行报告 由 LangGraph 编排提供支持,LLM 推理来自 **OpenAI (ChatGPT / GPT-4o)**。路由器、RCA 和报告编写 Agent 均使用 LLM 进行推理;每个 Agent 都有确定性的降级方案,因此系统也可以完全在离线启发式模式下运行。 ## 架构 ``` START → Incident Commander → Log Analysis + Metrics Analysis → RCA Analysis → Business Impact → Executive Summary → END ``` 每个 Agent: - 接收 IncidentState 作为输入 - 执行专项分析 - 将调查结果扩充到状态中 - 记录调用详情以供审计追踪 - 将增强后的状态返回给下一个 Agent ## 快速开始 ``` python -m venv venv source venv/bin/activate pip install -r requirements.txt cp .env.example .env # 将你的 OPENAI_API_KEY 粘贴到 .env 中 pytest python app.py ``` 然后在浏览器中打开 http://localhost:8000。 ## 演示 1. 点击“Scenario 1: DB Pool Exhaustion”按钮 2. 等待分析完成(约 2 秒) 3. 查看事件卡片,包含根本原因置信度、受影响用户、收入影响 4. 点击“View Full Details”查看工程摘要、证据和恢复建议 ## 项目结构 ``` incident-response-system/ ├── agents/ # Multi-agent system │ ├── __init__.py # IncidentState dataclass │ ├── incident_commander.py # Data loader & orchestrator │ ├── log_analysis.py # Error pattern detection │ ├── metrics_analysis.py # Metric spike detection │ ├── rca_analysis.py # Root cause hypothesis │ ├── business_impact.py # User & revenue impact │ └── executive_summary.py # Report generation ├── data/ # Realistic mock scenarios │ ├── scenario_1/ # DB Pool (50 → 30 connection limit) │ ├── scenario_2/ # Memory Leak (500MB → 2000MB) │ └── scenario_3/ # Cascading Failure (timeout cascade) ├── frontend/ # Vanilla HTML/CSS/JS │ ├── dashboard.html # Incident list & triggers │ ├── incident_detail.html # Full analysis view │ └── styles.css # Professional UI ├── tests/ # pytest suite │ ├── test_scenario_1.py │ ├── test_scenario_2.py │ ├── test_scenario_3.py │ └── test_all_scenarios.py ├── app.py # FastAPI backend ├── mock_data.py # Data loader ├── requirements.txt # Dependencies ├── .env.example # Configuration template ├── README.md # This file └── SETUP_INSTRUCTIONS.md # Detailed setup guide ``` ## 测试 ``` pytest # Run all tests pytest -v # Verbose output pytest tests/test_scenario_1.py # Single scenario ``` 所有三个场景均通过测试,具备: - 检测到的日志异常 > 0 - 检测到的指标异常 > 0 - 根本原因置信度 > 0.60 - 受影响用户 > 0 - 完整的审计追踪 ## 结果 ### 场景 1:数据库连接池耗尽 - **根本原因**:在最近的部署中,连接池大小从 50 减少到 30 - **置信度**:85% - **受影响用户**:1,400 - **收入影响**:$700/分钟 - **关键指标**:连接超时错误,CPU 峰值 23% → 78%,错误率 0.1% → 68% ### 场景 2:内存泄漏 - **根本原因**:代码回归导致内存未被释放 - **置信度**:72% - **受影响用户**:5,000 - **收入影响**:$1,500/分钟 - **关键指标**:GC 暂停时间增加,内存 500MB → 2000MB(无部署) ### 场景 3:级联故障 - **根本原因**:调用下游 payment-api 服务超时 - **置信度**:80% - **受影响用户**:3,000 - **收入影响**:$1,200/分钟 - **关键指标**:超时错误,延迟峰值 55ms → 8000ms,错误率飙升至 85% ## 技术栈 - **Python 3.10+** - 核心语言 - **LangGraph** - Agent 编排 - **FastAPI** - REST 后端(分析作为后台任务运行;UI 轮询实时进度) - **OpenAI (gpt-4o)** - LLM 推理,通过 `.env` 中的 `OPENAI_API_KEY` 进行配置 - **Pydantic** - 数据验证 - **pytest** - 测试 - **原生 HTML/CSS/JavaScript** - 前端(无需构建步骤) ## API Endpoints - `POST /api/incidents/trigger` - 启动事件分析(立即返回 `current_status: "investigating"`;Agent 在后台运行) { "timestamp": "2026-07-07T14:32:15Z", "service": "payment-api", "alert_description": "Connection pool exhaustion", "severity": "critical" } - `GET /api/incidents` - 列出所有事件(最新优先) - `GET /api/incidents/{incident_id}` - 轮询实时分析状态 / 检索已完成的分析 - `GET /api/config` - 活动的 LLM 提供商和模型(未设置 key 时为 `heuristic`) - `GET /api/graph` - Agent 图的 Mermaid 渲染 - `GET /api/health` - 健康检查 - `GET /` - 仪表盘 HTML - `GET /incident/{incident_id}` - 事件详情 HTML ## Slack 助手机器人模式 后端也可以作为 Slack 事件助手运行,以便用户可以从 Slack 线程中触发、 检查和治理事件,同时 Web 应用仍然是完整的指挥中心。 在 `.env` 中配置这些值: ``` SLACK_SIGNING_SECRET=... SLACK_BOT_TOKEN=xoxb-... SLACK_DEFAULT_CHANNEL=C0123456789 PUBLIC_BASE_URL=https://your-public-backend.example.com ``` Slack 应用 URL: - Slash command 请求 URL:`POST /api/slack/commands` - Events API 请求 URL:`POST /api/slack/events` - Interactivity 请求 URL:`POST /api/slack/interactivity` 建议的机器人权限范围:`chat:write`、`commands`、`app_mentions:read`, 以及机器人应回答线程事件问题的频道的消息读取权限范围。 示例命令: ``` /aioc trigger db /aioc trigger memory /aioc status /aioc ask why do we think this is the root cause? /aioc trace ``` ## 后续步骤 - 实现实时的 Datadog/Splunk 集成 - 添加 Codex 风格的部署差异代码变更分析 - 创建自动化修复手册 - 构建 Slack/PagerDuty 通知系统 - 实现多步骤恢复自动化 - 添加历史事件搜索和学习功能 ## 许可证 MIT ## 作者 Amulya Gupta & Anujay
标签:AIOps, LangGraph, 多智能体, 安全规则引擎, 智能运维, 根因分析, 逆向工具