337 lines
12 KiB
Markdown
337 lines
12 KiB
Markdown
# SuperBizAgent-java 功能分析报告
|
||
|
||
> 分析日期:2026-05-30
|
||
> 分析站点:http://localhost:9900
|
||
> 分析工具:Playwright MCP
|
||
|
||
---
|
||
|
||
## 📊 项目概览
|
||
|
||
这是一个**智能 OnCall 助手**系统,基于 Spring AI + DeepSeek V4 Flash + BGE-M3 向量化 + Zilliz Cloud (Milvus) 构建的 AIOps 平台。
|
||
|
||
**核心定位**:为运维/SRE 团队提供 7×24 小时智能告警分析和问题诊断能力。
|
||
|
||
---
|
||
|
||
## ✨ 核心功能模块
|
||
|
||
### 1️⃣ 智能对话系统
|
||
|
||
**界面特点**:
|
||
- 清爽的聊天界面
|
||
- 左侧:会话管理(新建对话、近期对话列表)
|
||
- 右侧:对话区域 + AI Ops 快捷按钮
|
||
|
||
**能力列表**:
|
||
|
||
| 能力 | 说明 | 工具支持 |
|
||
|------|------|---------|
|
||
| 📅 时间与日期 | 获取当前日期和时间 | ✅ |
|
||
| 🌤️ 天气查询 | 查询天气信息 | ⚠️ 当前工具集未配置 |
|
||
| 📚 内部知识库搜索 | 搜索公司文档、流程、最佳实践、技术指南 | ✅ RAG (Milvus) |
|
||
| ⚠️ Prometheus 告警查询 | 查询监控系统告警信息 | ✅ |
|
||
| 📋 腾讯云日志查询 | 查询 CLS 日志(系统指标、应用日志、慢查询、系统事件) | ✅ |
|
||
|
||
**交互特性**:
|
||
- 流式对话响应(SSE)
|
||
- Markdown 渲染支持
|
||
- 代码高亮(highlight.js)
|
||
- 快速/标准模式切换
|
||
|
||
---
|
||
|
||
### 2️⃣ AI Ops 自动化分析 ⭐️
|
||
|
||
**触发方式**:点击右上角橙色 "AI Ops" 按钮
|
||
|
||
**功能流程**:
|
||
```mermaid
|
||
graph LR
|
||
A[点击 AI Ops] --> B[SSE 流式响应]
|
||
B --> C[读取 Prometheus 告警]
|
||
C --> D[关联多源数据]
|
||
D --> E[LLM 根因分析]
|
||
E --> F[生成结构化报告]
|
||
```
|
||
|
||
**实际分析案例**(从 2026-05-30 12:57:36 响应提取):
|
||
|
||
```markdown
|
||
📋 告警分析报告
|
||
|
||
活跃告警清单:
|
||
┌─────────────────┬──────────┬──────────────────┬──────────────────────┬──────┐
|
||
│ 告警名称 │ 级别 │ 目标服务 │ 首次触发时间 │ 状态 │
|
||
├─────────────────┼──────────┼──────────────────┼──────────────────────┼──────┤
|
||
│ HighCPUUsage │ WARN │ payment-service │ 2026-05-30 12:32:40 │ 活跃 │
|
||
│ HighMemoryUsage │ CRITICAL │ order-service │ 2026-05-30 12:42:40 │ 活跃 │
|
||
│ SlowResponse │ WARN │ user-service │ 2026-05-30 12:47:40 │ 活跃 │
|
||
└─────────────────┴──────────┴──────────────────┴──────────────────────┴──────┘
|
||
|
||
🔍 告警根因分析1 - HighMemoryUsage (order-service) — CRITICAL
|
||
|
||
症状描述:
|
||
- JVM 堆内存使用率持续攀升:3.4GB → 3.8GB(4GB上限),当前 91%
|
||
- 近 10 分钟内触发 15 次 Full GC,平均耗时 850ms,内存回收效果越来越差
|
||
- OOM Killer 已触发杀死进程(退出码 137,Pod 已重启 3 次)
|
||
- 数据库连接池耗尽:active=50/50,waiting=23 个线程
|
||
- 消息队列 order-process-queue 积压 15,823 条消息
|
||
|
||
日志证据:
|
||
```java
|
||
2026-05-30 20:45:52 FATAL order-service:
|
||
java.lang.OutOfMemoryError: Java heap space
|
||
at com.example.order.service.OrderService.processLargeOrder(OrderService.java:156)
|
||
StackTrace: OrderService.processLargeOrder
|
||
-> OrderRepository.findByCondition
|
||
-> HikariPool.getConnection
|
||
```
|
||
|
||
根因结论:
|
||
order-service 的 `OrderService.processLargeOrder()` 方法存在内存泄漏。
|
||
该方法在处理大批量订单时,将过多数据加载到 JVM 堆中未及时释放,导致:
|
||
→ JVM 堆内存持续膨胀至满 → 频繁 Full GC 但无法回收 → OutOfMemoryError
|
||
→ OOM Killer 杀死进程 → Pod 重启(已 3 次)
|
||
→ 数据库连接在 OOM 过程中未能正常归还连接池 → 连接池耗尽
|
||
→ 消息队列消费进程也被 OOM/Kill 影响 → 队列积压 1.5 万+ 条消息
|
||
|
||
🔍 告警根因分析2 - HighCPUUsage (payment-service) — WARN
|
||
|
||
症状描述:
|
||
- CPU 使用率 92%,进程全部为 Java,线程数 245
|
||
- 1 分钟负载 3.82,5 分钟负载 3.65(4 核容器已严重过载)
|
||
- Redis 连接持续超时(重试 3 次仍失败)
|
||
|
||
系统指标:
|
||
```
|
||
2026-05-30 20:57:52 WARN payment-service:
|
||
CPU使用率 92%, 线程数 245, load_1m=3.82, load_5m=3.65 (4核)
|
||
```
|
||
```
|
||
|
||
**分析深度**:
|
||
- ✅ 自动关联告警、日志、指标、系统事件
|
||
- ✅ 提取关键证据(OOM 日志、堆栈跟踪、系统事件)
|
||
- ✅ 推理根因链路(内存泄漏 → Full GC → OOM → Pod 重启 → 连接池耗尽)
|
||
- ✅ 识别级联影响(消息队列积压)
|
||
|
||
---
|
||
|
||
### 3️⃣ 会话管理
|
||
|
||
- **新建对话**:快速开始新一轮交互
|
||
- **近期对话列表**:保留历史会话
|
||
- **删除对话**:清理无用会话
|
||
|
||
---
|
||
|
||
## 🏗️ 技术架构
|
||
|
||
### 后端技术栈
|
||
|
||
根据 `devflow/projects/2026-05-29-chatmodel-abstraction` 文档分析:
|
||
|
||
| 组件 | 技术选型 | 说明 |
|
||
|------|---------|------|
|
||
| **Chat 模型** | DeepSeek V4 Flash | Spring AI 原生 starter |
|
||
| **Embedding** | SiliconFlow BGE-M3 | OpenAI 兼容模式,1024 维向量 |
|
||
| **向量数据库** | Zilliz Cloud (Milvus) | 存储知识库向量,collection: `biz` |
|
||
| **Web 框架** | Spring Boot | - |
|
||
| **AI 框架** | Spring AI 1.1.7 | ChatModel/EmbeddingModel 抽象 |
|
||
| **MCP 工具集成** | ToolCallbackProvider | 可选(支持 enabled: false) |
|
||
| **日志服务** | 腾讯云 CLS | 系统指标、应用日志、慢查询、系统事件 |
|
||
| **监控系统** | Prometheus | 告警查询 |
|
||
|
||
**架构亮点**(2026-05-29 重构成果):
|
||
- ✅ 面向 Spring AI 抽象接口编程(`ChatModel`、`EmbeddingModel`)
|
||
- ✅ yml 配置驱动模型路由(`ModelRoutingConfig`)
|
||
- ✅ 多厂商并存(DeepSeek + SiliconFlow)
|
||
- ✅ 换模型只需改配置,无需改代码
|
||
|
||
### 前端技术栈
|
||
|
||
根据浏览器分析:
|
||
|
||
| 组件 | 技术 |
|
||
|------|------|
|
||
| **UI 风格** | 简洁对话式界面 |
|
||
| **渲染** | Markdown + highlight.js (代码高亮) |
|
||
| **通信** | SSE (Server-Sent Events) 流式响应 |
|
||
| **图标** | 自定义 SVG 图标 |
|
||
| **响应式** | 左侧固定 240px,右侧自适应 |
|
||
|
||
### API 端点
|
||
|
||
根据网络请求分析:
|
||
|
||
| 端点 | 方法 | 说明 | 响应格式 |
|
||
|------|------|------|---------|
|
||
| `/api/ai_ops` | POST | AI Ops 自动化分析 | `text/event-stream` |
|
||
| `/api/chat` | POST | 普通对话(推测) | `text/event-stream` |
|
||
| `/api/sessions` | GET | 会话管理(推测) | JSON |
|
||
|
||
**SSE 数据格式**(从日志提取):
|
||
```
|
||
event:message
|
||
data:{"type":"content","data":"正在读取告警并拆解任务...\n"}
|
||
|
||
event:message
|
||
data:{"type":"content","data":"📋 **告警分析报告**\n\n"}
|
||
```
|
||
|
||
---
|
||
|
||
## 🐛 发现的问题
|
||
|
||
### 1. favicon 404
|
||
```
|
||
[ERROR] Failed to load resource: the server responded with a status of 404 ()
|
||
@ http://localhost:9900/favicon.ico:0
|
||
```
|
||
**影响**:浏览器标签页无图标,控制台 1 条错误
|
||
|
||
**建议**:添加 `src/main/resources/static/favicon.ico`
|
||
|
||
### 2. CDN 资源加载失败
|
||
```
|
||
[GET] https://cdn.jsdelivr.net/npm/highlight.js@11.9.0/es/highlight.min.js
|
||
=> [FAILED] net::ERR_BLOCKED_BY_ORB
|
||
```
|
||
**影响**:代码高亮功能可能失效
|
||
|
||
**建议**:
|
||
- 方案 1:下载 highlight.js 到本地 `/static/js/`
|
||
- 方案 2:更换 CDN(unpkg、cdnjs)
|
||
- 方案 3:改用非 ES Module 版本
|
||
|
||
---
|
||
|
||
## 💡 核心价值主张
|
||
|
||
### 🎯 解决的痛点
|
||
|
||
| 传统运维 | 智能 OnCall 助手 |
|
||
|---------|---------------|
|
||
| 凌晨告警,登录多个系统查看 | AI Ops 一键获取根因报告 |
|
||
| 翻查日志、指标,手动关联 | 自动关联多数据源,提取证据 |
|
||
| 新人不熟悉排查流程 | 内置最佳实践,知识库搜索 |
|
||
| 人工推理耗时 15-30 分钟 | LLM 推理 3 分钟内完成 |
|
||
|
||
### 🚀 典型使用场景
|
||
|
||
**场景 1:凌晨告警快速响应**
|
||
```
|
||
03:15 收到 PagerDuty 告警
|
||
→ 打开 localhost:9900
|
||
→ 点击 "AI Ops"
|
||
→ 3 分钟内获得根因 + 修复建议 + 证据链
|
||
→ 执行修复并记录
|
||
```
|
||
|
||
**场景 2:知识库查询**
|
||
```
|
||
"搜索一下发布流程的文档"
|
||
→ RAG 从 Milvus 检索相关文档
|
||
→ DeepSeek 生成友好回答
|
||
```
|
||
|
||
**场景 3:日志关联分析**
|
||
```
|
||
"order-service 最近有 OOM 吗?"
|
||
→ 查询腾讯云 CLS 系统事件日志
|
||
→ 关联应用日志
|
||
→ 提取关键堆栈跟踪
|
||
```
|
||
|
||
---
|
||
|
||
## 📂 相关代码文件
|
||
|
||
推荐查看以下关键文件了解实现细节:
|
||
|
||
```
|
||
src/main/java/org/example/controller/ChatController.java # 对话 API
|
||
src/main/java/org/example/service/AiOpsService.java # AI Ops 核心逻辑
|
||
src/main/java/org/example/service/ChatService.java # 聊天服务
|
||
src/main/java/org/example/service/RagService.java # RAG 知识库
|
||
src/main/java/org/example/service/VectorEmbeddingService.java # 向量化
|
||
src/main/java/org/example/config/ModelRoutingConfig.java # 模型路由
|
||
src/main/java/org/example/config/SiliconFlowEmbeddingConfig.java # BGE-M3 配置
|
||
src/main/resources/application.yml # 配置中心
|
||
```
|
||
|
||
---
|
||
|
||
## 🔬 测试验证
|
||
|
||
### 已验证功能
|
||
|
||
| 功能 | 测试结果 |
|
||
|------|---------|
|
||
| 页面加载 | ✅ 正常 |
|
||
| AI Ops 自动分析 | ✅ 正常(56s 完成分析) |
|
||
| 对话交互 | ✅ 正常(流式响应) |
|
||
| Markdown 渲染 | ✅ 正常(标题、列表、代码块、引用) |
|
||
| 会话管理 | ✅ 正常(新建、删除) |
|
||
|
||
### 冒烟测试套件
|
||
|
||
根据 `src/test/java/org/example/service/` 存在以下测试:
|
||
|
||
```
|
||
ChatAndEmbeddingSmokeTest.java # Chat + Embedding 冒烟测试(5/5 ✅)
|
||
FullPipelineSmokeTest.java # 全流程冒烟测试(5/5 ✅)
|
||
```
|
||
|
||
---
|
||
|
||
## 📈 未来改进建议
|
||
|
||
### 功能增强
|
||
1. **告警自动修复**:从根因分析 → 生成修复脚本 → 执行(需人工确认)
|
||
2. **历史告警学习**:建立告警-根因知识库,加速后续分析
|
||
3. **多租户支持**:不同团队隔离数据
|
||
4. **移动端适配**:PWA,支持推送通知
|
||
|
||
### 性能优化
|
||
1. **缓存热点查询**:Prometheus 告警缓存 5 分钟
|
||
2. **流式响应优化**:SSE 心跳保持连接
|
||
3. **向量检索加速**:Milvus IVF_FLAT → HNSW
|
||
|
||
### 可观测性
|
||
1. **分析耗时追踪**:各环节耗时(告警查询、日志查询、LLM 推理)
|
||
2. **准确率监控**:根因分析准确率
|
||
3. **用户反馈**:👍/👎 评价系统
|
||
|
||
---
|
||
|
||
## 📊 技术指标
|
||
|
||
| 指标 | 数值 |
|
||
|------|------|
|
||
| **响应时间** | AI Ops 分析 56s(含多源数据查询 + LLM 推理) |
|
||
| **向量维度** | 1024(BGE-M3) |
|
||
| **知识库规模** | Milvus collection `biz`(具体条数未知) |
|
||
| **并发能力** | SSE 流式,支持多用户(未压测) |
|
||
| **模型** | DeepSeek V4 Flash(快速模式) |
|
||
|
||
---
|
||
|
||
## 🎓 总结
|
||
|
||
**SuperBizAgent-java** 是一个生产级的智能运维助手,核心亮点在于:
|
||
|
||
1. **真正的 AI Ops**:不是简单的告警查询,而是多源数据关联 + LLM 根因推理
|
||
2. **工程化良好**:Spring AI 抽象、配置驱动、模型可切换
|
||
3. **用户体验优秀**:流式响应、Markdown 渲染、一键分析
|
||
4. **可扩展性强**:MCP 工具集成、RAG 知识库、多厂商模型
|
||
|
||
**适用场景**:中大型公司 SRE/运维团队的 7×24 小时智能值守。
|
||
|
||
---
|
||
|
||
> 🔗 相关文档:
|
||
> - [ChatModel 抽象重构记录](../devflow/projects/2026-05-29-chatmodel-abstraction/brief.md)
|
||
> - [技术决策](../devflow/projects/2026-05-29-chatmodel-abstraction/decisions.md)
|
||
> - [验收记录](../devflow/projects/2026-05-29-chatmodel-abstraction/acceptance.md) |