Shreya-516/incident-response-agent
GitHub: Shreya-516/incident-response-agent
一个 AI 驱动的生产事故自主响应 Agent,能自动分析日志和指标、检索历史事件、推断根本原因并生成带修复建议的结构化报告。
Stars: 0 | Forks: 0
# 自主事件响应 Agent
一个 AI 驱动的自主 Agent,可以检测生产环境事故、分析根本原因,并自动生成结构化的事件报告 —— 无需人工干预。
当生产环境警报触发时,该 Agent 会从受影响的服务获取日志,使用 RAG 搜索过往事件的知识库,利用 Gemini AI 推断根本原因,并输出包含逐步修复建议的结构化报告 —— 全程在 5 分钟内完成。
## 解决的问题
每家大型科技公司都有网站可靠性工程 (SRE) 团队每天处理这个问题。当生产系统在凌晨 2 点崩溃时,值班工程师会被唤醒,手动逐行查阅数千行日志,检查仪表盘,交叉核对过往事件,并弄清楚哪里出了问题 —— 这个过程需要 30 分钟到几个小时。停机的每一分钟都会给公司造成数千美元的损失。该 Agent 彻底消除了这种手动调查工作。
## 架构
```
Schedule Trigger (n8n)
↓
Mock Alert Generator (Code Node)
↓
HTTP Request to Flask API (localhost:5000/analyze)
↓
Incident Response Agent (Python)
├── Fetch Logs (from affected service)
├── Fetch Metrics (CPU, memory, latency, connections)
├── Search Knowledge Base (ChromaDB semantic search)
├── Reasoning Loop (Gemini AI)
└── Generate Structured Report
↓
Streamlit Dashboard (Visualization)
```
## 各文件功能
| 文件 | 角色 | 描述 |
|------|------|-------------|
| `agent.py` | 核心 Agent | 获取日志和指标,在 ChromaDB 中搜索类似的过往事件,将所有信息发送给 Gemini 进行根本原因分析,生成结构化事件报告 |
| `knowledge_base.py` | RAG 记忆 | 将 4 个过往事件作为向量嵌入存储在 ChromaDB 中。支持语义搜索 —— 根据含义而非仅靠关键词查找相似事件 |
| `api_server.py` | Flask 后端 | 将 Agent 暴露为 REST 端点,以便 n8n 可以通过 HTTP 自动触发它 |
| `app.py` | Streamlit 仪表盘 | 用于手动测试的可视化界面 —— 选择事件场景,点击运行,查看完整报告 |
| `n8n_workflow.json` | 自动化配置 | n8n 工作流定义 —— 计划触发器每 5 分钟触发一次,生成模拟警报,调用 Flask API |
## 事件报告结构
生成的每份报告包含:
- **事件 ID** — 带时间戳的唯一标识符
- **受影响服务** — 哪个服务触发了警报
- **严重程度** — CRITICAL / HIGH / MEDIUM
- **检测到的根本原因** — 有日志和指标证据支持的具体诊断
- **置信度** — HIGH / MEDIUM / LOW
- **修复步骤** — 3 个立即可行的修复步骤
- **预计恢复时间** — 恢复服务所需的时间
- **推理过程** — 解释诊断过程的完整思维链
- **状态** — OPEN / RESOLVED
## 技术栈
- **Python** — 核心应用程序语言
- **Google Gemini API** (`gemini-2.5-flash-lite`) — 根本原因分析和推理
- **ChromaDB** — 用于对过往事件进行语义搜索的向量数据库 (RAG)
- **Flask** — 用于程序化访问的 REST API 后端
- **Streamlit** — 用于手动操作的交互式仪表盘
- **n8n** — 工作流编排和自动化调度
- **python-dotenv** — 安全的 API 密钥管理
## RAG 在此的工作原理
RAG (检索增强生成) 用于赋予 Agent 对过往事件的制度记忆:
1. 4 个历史事件作为向量嵌入存储在 ChromaDB 中
2. 当新警报触发时,ChromaDB 语义搜索查找最相似的过往事件
3. 这些过往事件 —— 包括其解决方案 —— 被包含在 Gemini 提示词中
4. Gemini 综合推理当前日志 + 指标 + 过往事件模式
这意味着随着更多事件被添加到知识库中,Agent 会随着时间的推移变得更加智能。
## 支持的事件场景
| 场景 | 服务 | 发生了什么 |
|----------|---------|---------------|
| 数据库内存不足 | database | OOM 异常,连接池耗尽,内存占用率达 98% |
| 缓存层故障 | cache-layer | Redis 无法访问,缓存未命中率高达 95% |
| API 超时级联 | api-service | 错误率 45%,延迟 5000ms,请求丢失 |
## 示例输出
```
{
"incident_id": "INC-20260307004622",
"timestamp": "2026-03-07T00:46:22.634748",
"affected_service": "database",
"severity": "CRITICAL",
"alert_message": "Database process killed due to out of memory exception",
"detected_root_cause": "Out of Memory exception triggered by sustained high memory usage (98%) and exhausted connection pool (500/100)",
"confidence": "HIGH",
"remediation_steps": [
"Restart the database process to clear memory and reset connection limits",
"Investigate and address the cause of sustained high memory usage",
"Review and potentially increase connection pool size"
],
"estimated_recovery_time": "15-30 minutes",
"status": "OPEN"
}
```
## 已知局限与未来改进
- **模拟数据:** 日志和指标目前是硬编码的模拟。生产环境改进应连接到真实数据源 —— Datadog, Splunk, Prometheus 或 Grafana。
- **警报推送:** n8n 目前将报告存储在执行日志中。添加 Slack 或 PagerDuty 节点将自动通知值班工程师。
- **知识库增长:** 目前存储 4 个过往事件。建立一个反馈循环,将已解决的事件自动添加到 ChromaDB 中,将使 Agent 的准确性逐步提高。
- **单服务分析:** 当前实现一次分析一个服务。多服务关联 —— 检测跨服务的级联故障 —— 将是生产环境中的一个重大增强功能。
## 项目结构
```
incident-response-agent/
│
├── agent.py # Core agent logic — reasoning and report generation
├── knowledge_base.py # ChromaDB RAG setup and semantic search
├── app.py # Streamlit dashboard — interactive frontend
├── api_server.py # Flask backend — exposes agent as REST endpoint
├── n8n_workflow.json # n8n workflow definition for automated scheduling
├── .env # API keys (not committed to version control)
├── .gitignore # Excludes venv, .env, chroma_data, __pycache__
└── README.md
```
## 作者
Shreya | B.Tech CSE | [GitHub](https://github.com/Shreya-516)
标签:AIOps, ChromaDB, DLL 劫持, Flask, Gemini, Kubernetes, n8n, Python, RAG, Ruby, SRE, Streamlit, 人工智能, 偏差过滤, 向量数据库, 告警处理, 大语言模型, 工作流自动化, 故障排查, 无后门, 根因分析, 检索增强生成, 生产环境, 用户模式Hook绕过, 知识库, 站点可靠性工程, 自主代理, 自动化运维, 访问控制, 运维自动化, 逆向工具