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绕过, 请求拦截, 运维