JayHarsha/ai-incident-response

GitHub: JayHarsha/ai-incident-response

一个结合 RAG 检索与本地 LLM 推理的 AI 智能事件响应平台,通过自动化五步分析流水线为工程师提供故障根因诊断和修复建议。

Stars: 0 | Forks: 0

# InciSight — AI 事件智能平台 ## 功能说明 1. 工程师提交事件(服务名称 + 错误信息 + 严重程度) 2. Java 服务将其保存到 Postgres 并发布到 Kafka 3. Python AI agent 运行 5 步 pipeline: - **分类 (Classify)** → 识别事件类型 (DATABASE / KAFKA / NETWORK 等) - **RAG 搜索 (RAG Search)** + **收集上下文 (Gather Context)** → 并行运行;在 Qdrant 中搜索过往事件与 runbook,获取实时日志 - **生成分析 (Generate Analysis)** → LLM 生成根本原因假设及可执行的修复步骤 - **发布 (Publish)** → 结果通过 Kafka 发送回,并更新 Postgres 4. 仪表板通过 WebSocket 显示实时节点进度,随后展示完整的 AI 报告 ## 架构 ``` React Dashboard (3000) │ REST + WebSocket ▼ incident-service ──Kafka: incident-created──▶ incident-ai-service Java / Spring Boot (8080) Python / FastAPI (8000) │ ◀──── MCP (JSON-RPC 2.0) ─────────────────────┤ │ ┌──────┴──────┐ ▼ Qdrant Ollama PostgreSQL (5433) vectors local LLM ▲ └──────┬──────┘ └──────Kafka: incident-analyzed──────────────────┘ ``` **使用三种通信协议:** - **REST** — React 仪表板 ↔ Java(同步 CRUD) - **Kafka** — Java ↔ Python AI agent(异步事件流) - **MCP** — Python AI agent → Java(通过 JSON-RPC 2.0 协议进行工具调用) ## 服务与端口 | 服务 | 端口 | 角色 | |---|---|---| | `incident-dashboard` | 3000 | React UI | | `incident-service` | 8080 | Java REST API + Kafka 生产者/消费者 | | `incident-ai-service` | 8000 | Python AI agent + WebSocket | | Kafka | 9092 | 事件总线 | | Kafka UI | 8081 | 浏览 topic 与消息 | | **PostgreSQL** | **5433** | 事件存储(Docker 映射至 5433 以避免与本地 5432 端口上的 Postgres 冲突) | | Qdrant | 6333 | 用于 RAG 的向量数据库 | ## 前置条件 | 工具 | 版本 | 说明 | |---|---|---| | Docker Desktop | 24+ | 必须处于运行状态 | | Ollama | 0.3+ | 必须在宿主机上运行 | | Git | 任意 | | ## 快速开始 ``` # Clone git clone https://github.com/JayHarsha/ai-incident-response.git cd ai-incident-response # 拉取 LLM(一次性,约 2 GB) ollama pull llama3.2 # 确保 Ollama 正在运行 ollama serve # 启动所有服务 docker compose up --build ``` 首次构建:**5–10 分钟**。后续启动:快速完成(已缓存层)。 ### 启动后的 URL | URL | 说明 | |---|---| | http://localhost:3000 | 仪表板 | | http://localhost:8080/api/v1/incidents | Java REST API | | http://localhost:8000/health | AI 服务健康状态 | | http://localhost:8081 | Kafka UI | | http://localhost:6333/dashboard | Qdrant | ## 配置说明 ### 凭证(默认值 — 开箱即用) | 设置 | 值 | |---|---| | 数据库主机(从宿主机访问) | `localhost:5433` | | 数据库名称 | `incident_db` | | 数据库用户名 | `postgres` | | 数据库密码 | `@Qwerty7` | ### 修改数据库密码 需要在**两个**文件中同时更新: ``` # docker-compose.yml — 在 postgres service 下 POSTGRES_PASSWORD: your-new-password # docker-compose.yml — 在 incident-service 下 SPRING_DATASOURCE_PASSWORD: your-new-password ``` ``` # incident-service/src/main/resources/application.properties(仅限本地开发) spring.datasource.password=your-new-password ``` ### 修改 Ollama 模型 1. `ollama pull ` 2. 更新 `incident-ai-service/app/agent/incident_agent.py` 中的 `model=` ## 本地开发(不使用 Docker) 在 Docker 中运行基础设施,原生运行服务以加快迭代速度。 ``` # 仅启动 infrastructure docker compose up kafka postgres qdrant -d ``` 然后在不同的终端中执行: ``` # Java service cd incident-service ./mvnw spring-boot:run # Mac/Linux mvnw.cmd spring-boot:run # Windows ``` ``` # Python AI service cd incident-ai-service .\venv\Scripts\Activate.ps1 # Windows # source venv/bin/activate # Mac/Linux python -m uvicorn app.main:app --port 8000 --reload ``` ``` # React dashboard cd incident-dashboard npm install && npm run dev # opens at localhost:3000 ``` ## 故障排除 | 问题 | 解决方案 | |---|---| | AI 服务无法连接 Ollama | 在宿主机上运行 `ollama serve`。Linux 系统需添加 `--add-host=host.docker.internal:host-gateway` | | `incident-service` 启动时出现 Kafka 错误 | 正常现象 — Kafka 健康检查会重试 15 次。请等待 30 秒或检查 `docker compose logs kafka` | | Qdrant 首次启动缓慢 | 预期情况 — 对 12 个知识库文件进行 embedding 大约需要 30 秒。重启后会变快 | | 端口已被占用 | 停止占用 8080 / 8000 / 3000 / 9092 / 6333 / 8081 端口的本地服务 | | 本地 Postgres 在 5432 端口冲突 | Docker Postgres 使用的是 5433 — 无冲突。若仍有问题:`docker compose down -v && docker compose up --build` | | 修改密码后数据库认证失败 | `docker compose down -v` 清除旧 volume,然后重新启动 | ## 技术栈 ``` Java 21 · Spring Boot 4.1 · Spring Kafka · Spring Data JPA · PostgreSQL 17 · HikariCP · MCP Server Python 3.11 · FastAPI · LangGraph 0.2 · LangChain · ChatOllama (llama3.2) · MCP Client Sentence Transformers (all-MiniLM-L6-v2) · Qdrant · kafka-python · Pydantic v2 · httpx React 19 · Vite 8 · TailwindCSS v4 · React Router v7 · Axios · Native WebSocket Apache Kafka (KRaft) · Model Context Protocol (MCP) · Docker · nginx ```
标签:AI风险缓解, Kafka, Python, RAG, SonarQube插件, 事件管理, 人工智能, 无后门, 智能运维(AIOps), 测试用例, 用户模式Hook绕过, 请求拦截, 软件成分分析, 运维监控