Puneetdivedi/SentinelAI-Incident-Response
GitHub: Puneetdivedi/SentinelAI-Incident-Response
基于多 Agent 编排的企业级 AI 事件响应平台,帮助 SRE 团队自动化完成生产事件调查、根因分析和报告生成。
Stars: 0 | Forks: 0
# SentinelAI
SentinelAI 是一个企业级的 AI 事件响应平台,旨在帮助 SRE 和工程团队更快地调查生产事件、识别根本原因,并自信地执行修复。它结合了 React 运营仪表板、FastAPI 后端以及 LangGraph 多 Agent 编排层,从而提供结构化、可观测的事件响应体验。
## 在线演示
**目标 Vercel 应用程序:** https://sentinelai-incident-response.vercel.app
## 本项目功能
SentinelAI 提供完整的事件响应工作流:
- 接受来自用户的事件调查请求。
- 通过专门的 Agent 执行自主的证据收集。
- 关联告警、日志、指标、部署、依赖关系以及历史事件。
- 生成经过排序的根本原因假设和修复建议。
- 生成面向管理层和技术团队的事件报告。
- 支持在持久化之前由人工批准修复操作。
- 持久化保存调查上下文、审计日志和报告,以供日后审查。
## 行业级架构
SentinelAI 采用整洁架构原则构建:
- **API 层** (`backend/app/api`): FastAPI 端点、输入验证、响应序列化。
- **应用层** (`backend/app/services`, `backend/app/agents`, `backend/app/graphs`, `backend/app/tools`): 编排、业务用例、Agent 执行、工具集成。
- **领域层** (`backend/app/domain`): 核心事件和调查实体、值对象、枚举和领域规则。
- **基础设施层** (`backend/app/infrastructure`, `backend/app/repositories`): 数据库、缓存、向量搜索、LLM 适配器和数据源提供程序。
- **可观测性** (`backend/app/observability`): 用于链路追踪的 LangFuse 和 OpenTelemetry 监测。
### 核心原则
- **清晰的分层:** 内部业务规则不依赖于外部框架。
- **领域驱动建模:** 事件和调查概念被表示为领域对象。
- **仓储模式:** 持久化位于接口之后;数据库细节可替换。
- **依赖注入:** 服务从配置中接收协作组件。
- **多 Agent 编排:** Supervisor 图负责协调 Agent 执行和审批流程。
- **部署就绪:** 支持 Docker Compose、Vercel、健康检查和 CI 工作流。
## 系统能力
### AI 编排
- **Supervisor 图:** 编排 Agent 执行、重试和审批状态的流程。
- **专业化 Agent:** 告警分析、日志分析、指标分析、部署分析、依赖分析、历史事件搜索、根本原因分析、建议生成、反思、报告生成和通知起草。
- **LangChain 工具:** 用于日志搜索、指标查询、部署历史、事件搜索、向量搜索、SQL 执行、Markdown/PDF/Word 报告生成、图表生成和时间线创建的可复用工具。
- **类型化的调查状态:** 跟踪事件元数据、执行计划、Agent 输出、证据、假设、建议、日志、Trace ID 和审批状态。
### 后端能力
- **FastAPI REST API:** 身份验证、事件、调查、报告、用户、健康检查。
- **业务服务:** 位于 `backend/app/services/*` 的应用层用例。
- **SQL 持久化:** PostgreSQL、SQLAlchemy ORM、Alembic 迁移。
- **Redis 支持:** 缓存、限流、会话协调。
- **Qdrant 向量搜索:** 历史事件记忆和语义检索。
- **安全性:** JWT access + refresh token 身份验证、RBAC 角色、请求验证、审计日志。
- **可观测性:** LangFuse 事件跟踪和 OpenTelemetry 链路追踪。
### 前端能力
- **React 仪表板:** 现代化的事件运营界面。
- **主要页面:** 登录、仪表板、事件、调查详情、历史事件、设置。
- **数据层:** React Query 和 Axios,并处理 token 刷新。
- **UI 组件:** 共享的徽章、卡片、受保护路由和布局。
- **SPA 路由:** Vite,支持客户端路由和回退机制。
- **部署就绪:** 通过 Vite 进行静态构建,以及适配 Vercel 的配置。
## 文件和组件映射
### 后端
- `backend/app/main.py` — 应用程序工厂、生命周期、日志记录、CORS 和启动行为。
- `backend/app/config/settings.py` — 基于环境变量的配置,包含生产环境验证。
- `backend/app/config/logging.py` — 日志记录设置和结构化日志输出。
- `backend/app/api/v1/routes/` — 用于身份验证、用户、事件、调查和健康状况的 API 路由。
- `backend/app/api/deps.py` — 依赖注入助手和身份验证依赖项。
- `backend/app/services/` — 实现业务操作的应用程序服务类。
- `backend/app/agents/` — 用于推理、分析、控制和报告的 Agent 类。
- `backend/app/graphs/` — Supervisor 图、运行器、注册表和节点定义。
- `backend/app/tools/` — 用于可复用 LangChain/LLM 操作的工具定义。
- `backend/app/domain/` — 实体、值对象、枚举和领域异常。
- `backend/app/repositories/` — 仓储接口和具体的 SQLAlchemy 实现。
- `backend/app/infrastructure/` — LLM 提供程序、数据源提供程序和 Mock 基础设施。
- `backend/app/state/` — 类型化的调查状态管理。
- `backend/app/models/` — 用于用户、事件、调查、报告和审计日志的 SQLAlchemy 模型。
- `backend/app/middleware/` — 错误处理和 Correlation ID 中间件。
- `backend/app/observability/` — LangFuse 客户端和 OpenTelemetry 链路追踪设置。
- `backend/app/prompts/` — Agent prompt 模板和系统消息定义。
- `backend/tests/` — 单元测试、集成测试、图测试、API 测试和 Agent 测试。
- `backend/alembic/` — 数据库迁移脚本和环境配置。
- `backend/docker-entrypoint.sh` — 包含数据库就绪检查和迁移的容器启动脚本。
- `backend/Dockerfile` — 后端容器镜像构建。
### 前端
- `frontend/src/main.tsx` — React 应用引导。
- `frontend/src/App.tsx` — 路由和页面配置。
- `frontend/src/pages/` — 包含仪表板、事件、调查详情、历史事件、登录、设置的页面。
- `frontend/src/services/api.ts` — Axios 实例、Auth Header 注入、Refresh Token 处理。
- `frontend/src/hooks/queries.ts` — 使用 React Query 的 API 查询 Hooks。
- `frontend/src/contexts/AuthContext.tsx` — 身份验证状态和 Provider。
- `frontend/src/components/ProtectedRoute.tsx` — 受身份验证保护的路由包装器。
- `frontend/src/layouts/DashboardLayout.tsx` — 共享的仪表板布局。
- `frontend/src/components/ui.tsx` — 共享的 UI 基础组件和徽章。
- `frontend/vercel.json` — Vercel 静态部署配置。
- `frontend/public/_redirects` — SPA 路由的 Redirect 支持。
- `frontend/Dockerfile` — 前端容器构建。
- `frontend/tsconfig.json`, `frontend/vite.config.ts` — TypeScript 和 Vite 构建配置。
## Agent、图和工具
- `backend/app/agents/analysis_agents.py` — 用于告警、日志、指标、部署和依赖项的证据收集 Agent。
- `backend/app/agents/reasoning_agents.py` — 用于根本原因、建议和反思的推理 Agent。
- `backend/app/agents/reporting_agents.py` — 报告生成和通知起草。
- `backend/app/graphs/supervisor_graph.py` — 图定义和执行顺序。
- `backend/app/graphs/runner.py` — 图运行器和 Checkpointing。
- `backend/app/graphs/baseline_nodes.py` — 基础节点和可复用的图节点模式。
- `backend/app/tools/retrieval_tools.py` — 向量和记忆检索工具。
- `backend/app/tools/report_tools.py` — 报告生成、图表和文档工具。
- `backend/app/tools/analysis_tools.py` — 分析辅助工具和基于 prompt 的工具包装器。
- `backend/app/tools/base.py` — 基础工具类和接口定义。
## 仪表板和前端体验
仪表板专为运营可视化而构建:
- **仪表板页面:** 事件计数、活跃事件摘要、等待审批的统计信息。
- **事件列表:** 快速访问具有严重程度和状态的未解决事件。
- **调查详情:** 调查状态、Agent 输出、报告和审批操作。
- **历史视图:** 搜索和回放过去的事件调查。
- **设置:** 配置和用户个人资料控制。
## 部署和 CI
### Docker Compose
完整的技术栈通过 `docker-compose.yml` 进行编排:
- `postgres` — 主关系型数据库。
- `redis` — 缓存和协调。
- `qdrant` — 向量搜索存储。
- `backend` — FastAPI 应用程序。
- `frontend` — 由 Nginx 提供服务的静态前端。
### GitHub Actions
- `.github/workflows/ci.yml` — 后端 Lint/测试和前端构建验证。
- `.github/workflows/vercel-deploy.yml` — 在 `main` 分支上自动将前端部署到 Vercel。
### Vercel 支持
- `frontend/vercel.json` — Vercel 构建配置。
- `frontend/public/_redirects` — 用于客户端导航的 SPA 路由回退。
- `docs/DEPLOYMENT.md` — Vercel 部署和后端主机设置。
## 健康、可观测性和质量
- `/health` — 存活探针端点。
- `/health/ready` — 针对数据库的就绪探针检查。
- LangFuse 链路追踪,用于 LLM 调用和 Agent 工作流执行。
- OpenTelemetry 用于 API 和后端链路追踪。
- JSON 结构化日志和 Correlation ID。
- `scripts/quality-check.sh` — 本地 Lint 和测试质量门禁。
## 环境变量
关键环境变量:
- `APP_ENV`
- `APP_DEBUG`
- `JWT_SECRET_KEY`
- `BOOTSTRAP_ADMIN_EMAIL`
- `BOOTSTRAP_ADMIN_PASSWORD`
- `POSTGRES_USER`
- `POSTGRES_PASSWORD`
- `POSTGRES_DB`
- `DATABASE_URL`
- `REDIS_URL`
- `QDRANT_URL`
- `LLM_PROVIDER`
- `ANTHROPIC_API_KEY`
- `OPENAI_API_KEY`
- `VITE_API_BASE_URL`
- `BACKEND_PORT`
- `FRONTEND_PORT`
## 适用的行业用例
- 面向云原生服务的事件响应自动化。
- 事件后的根本原因调查和报告。
- SRE 工作流加速和文档生成。
- 通过向量化的事件记忆进行知识保留。
- 为修复审批和利益相关者沟通提供决策支持。
## 推荐的后续步骤
1. 接入真实的日志、指标和部署历史数据提供程序。
2. 添加生产级的可观测性连接器(Loki、Prometheus、Grafana、Sentry)。
3. 针对多租户运营强化身份验证和 RBAC 规则。
4. 在仪表板中完善时间线、根本原因可视化和报告导出功能。
5. 使用真实的后端 URL 配置 Vercel,并确认首次成功部署。
## 许可证
除非仓库所有者另有说明,否则本项目仅供内部、演示或作品集使用。
时间线生成器
通知生成器
# 数据源
支持:
Mock Kubernetes 日志
Mock Nginx 日志
Mock FastAPI 日志
Mock PostgreSQL 日志
CPU 指标
内存指标
延迟指标
部署历史
事件历史
知识库
应用程序必须首先完全基于 Mock 数据运行。
设计接口,以便随后真实的提供程序可以替换 Mock。
# 根本原因分析
AI 应识别出以下可能的根本原因:
内存泄漏
数据库锁
连接池耗尽
Redis 超时
错误部署
配置错误
DNS 故障
证书过期
依赖故障
外部 API 故障
每个假设必须包含:
置信度
证据
支持性日志
支持性指标
推理过程
建议操作
# 建议
生成诸如以下的修复建议:
回滚部署
重启服务
扩容 Pod
增加连接池
刷新缓存
重启数据库
轮换证书
调查 SQL 查询
开启事件
升级至团队
每项建议必须包含优先级、风险和理由。
# 报告
生成:
执行摘要
事件时间线
证据
根本原因
业务影响
技术影响
建议
待办事项
经验教训
支持 PDF、DOCX 和 Markdown 导出。
# 前端
构建包含以下内容的企业级仪表板:
登录
仪表板
实时事件
对话式调查
Agent 执行图
时间线
根本视图
建议
报告
历史事件
LangFuse Trace 查看器
设置
使用现代响应式 UI。
# LANGFUSE
监测每一次 LLM 交互。
捕获:
Prompt 版本
Agent 名称
执行图
延迟
Token 使用量
成本
失败
重试
反馈
Session ID
Trace ID
为每次调查提供 Trace 链接。
# 可观测性
添加结构化日志、健康端点、指标和分布式链路追踪。
# 测试
使用 pytest。
包含:
单元测试
集成测试
图测试
Agent 测试
API 测试
# 安全
实现:
JWT
RBAC
输入验证
SQL 注入防护
Prompt 注入缓解
限流
审计日志
# 部署
提供:
Dockerfile
docker-compose.yml
GitHub Actions
环境变量
README
架构图
API 文档
部署指南
# 开发规则
绝不生成占位符代码。
绝不跳过文件。
绝不留下 TODO 注释。
生成功能完整的实现。
保持架构一致。
使用正确的类型提示。
在合适的地方使用 async。
遵循 SOLID 原则。
编写生产级质量的代码。
# 实施策略
切勿在单次响应中生成整个项目。
而是,请严格遵循以下顺序:
阶段 1 – 高级架构和文件夹结构。
阶段 2 – 数据库 Schema、领域模型和配置。
阶段 3 – 身份验证和用户管理。
阶段 4 – LangGraph 状态、图编排和 Supervisor。
阶段 5 – 独立的 Agent。
阶段 6 – LangChain 工具。
阶段 7 – API。
阶段 8 – 前端。
阶段 9 – LangFuse 监测。
阶段 10 – Docker、CI/CD、测试和文档。
在完成每个阶段后,请停止并等待我的批准,然后再进入下一阶段。
在每个阶段,确保所有生成的代码都能编译,并与之前的阶段完美整合。
标签:API集成, AV绕过, FastAPI, PyRIT, React, Syscalls, 事故响应, 人工智能, 可观测性, 多智能体系统, 安全规则引擎, 搜索引擎查询, 测试用例, 用户代理, 用户模式Hook绕过, 请求拦截, 运维