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绕过, 请求拦截, 软件成分分析, 运维监控