bsrlabhinav/Incident_Response_RCA-Analyzer
GitHub: bsrlabhinav/Incident_Response_RCA-Analyzer
一个覆盖事件创建、调查、解决、RCA到关闭全生命周期的生产事件管理平台,内置状态机工作流和SLA追踪。
Stars: 0 | Forks: 0
# 事件响应平台
一个全生命周期的事件管理平台,用于跟踪生产事件从创建、调查、解决、根本原因分析(RCA)到关闭的全过程。基于 Spring Boot、React 和 Elasticsearch 构建。
## 功能特性
- **事件管理** — 创建、分配、更新和关闭事件,包含严重级别和责任人跟踪
- **状态机工作流** — 强制执行状态转换(OPEN → INVESTIGATING → FIXED → RCA_PENDING → CLOSED),并在调查前确保已分配责任人,关闭前确保存在 RCA
- **SLA 跟踪** — 针对不同严重级别的确认和解决 SLA 阈值,并自动检测违规
- **根本原因分析** — 记录 RCA,包含类别、摘要和行动项
- **证据附件** — 将支持性证据附加到事件中
- **审计追踪** — 自动记录所有事件状态变更
- **Shifu 报告引擎** — 可插拔的分析功能,预定义了事件摘要、SLA 违规和 RCA 类别的报告
- **数据库浏览器** — 浏览原始 Elasticsearch 文档,支持过滤器和全文搜索
- **用户管理** — 创建和管理具有角色的用户,用于分配和报告
## 文档
| 文档 | 描述 |
|----------|-------------|
| [ARCHITECTURE.md](ARCHITECTURE.md) | 深入的架构指南,涵盖后端层、数据模型、状态机设计、Shifu 报告引擎内部机制、REST API 参考、前端结构、数据流图和扩展性模式 |
| [start.sh](start.sh) | 一键设置脚本,启动 Elasticsearch、后端、前端,并可选择填充示例数据 |
| [seed-data.sh](incident-response-ui/seed-data.sh) | 为本地开发环境填充示例事件、用户和 RCA |
## 技术栈
| 层级 | 技术 |
|-------|------------|
| Backend | Java 17, Spring Boot 3.2.3 |
| Database | Elasticsearch 8.11.4 |
| Frontend | React 19, Vite, Tailwind CSS |
| Routing | React Router 7 |
| Build | Gradle |
| Testing | JUnit 5, Mockito, Testcontainers, Playwright |
## 快速开始
### 前置条件
- Java 17+
- Node.js 18+
- Docker
### 一键启动
[`start.sh`](start.sh) 脚本负责处理完整的环境设置:
```
./start.sh
```
这将启动 Elasticsearch、Spring Boot 后端和 Vite 开发服务器,然后填充示例数据。
| 标志 | 描述 |
|------|-------------|
| `--no-seed` | 跳过填充示例数据 |
| `--clean` | 清除现有数据并重新填充 |
### 手动设置
**1. 启动 Elasticsearch**
```
docker run -d --name incident-es \
-p 9200:9200 \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=false" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
docker.elastic.co/elasticsearch/elasticsearch:8.11.4
```
**2. 启动后端**
```
./gradlew bootRun
```
**3. 启动前端**
```
cd incident-response-ui
npm install
npm run dev
```
**4. 填充示例数据(可选)**
```
cd incident-response-ui
bash seed-data.sh
```
后端运行在 `http://localhost:8080`,前端运行在 `http://localhost:3000`(将 `/api/*` 代理到后端)。
## 架构
```
Browser (React) → Vite :3000 → /api/* proxy → Spring Boot :8080 → Elasticsearch :9200
```
### 后端层级
| 层级 | 职责 |
|-------|---------------|
| Controllers | HTTP 处理、请求验证、响应映射 |
| Services | 业务逻辑、编排、状态机调用 |
| State Machine | 转换验证、守卫条件和副作用动作 |
| Reporting (Shifu) | 报告定义、ES 聚合查询、分析 |
| Repositories | Spring Data Elasticsearch 数据访问 |
### 事件生命周期
```
OPEN ──→ INVESTIGATING ──→ FIXED ──→ RCA_PENDING ──→ CLOSED
(requires owner) (requires RCA)
```
守卫条件在每次转换时强制执行前置条件,动作会自动记录审计条目并计算 SLA 违规。有关完整的转换图和详细信息,请参阅架构文档中的 [State Machine](ARCHITECTURE.md#incident-lifecycle--state-machine) 和 [Guards & Actions](ARCHITECTURE.md#guards--actions) 部分。
### Elasticsearch 索引
| 索引 | 用途 |
|-------|---------|
| `incidents` | 核心事件文档 |
| `incident_audits` | 变更审计追踪 |
| `incident_evidence` | 附件证据 |
| `root_cause_analyses` | RCA 记录 |
| `users` | 用户配置文件 |
## API
所有端点均位于 `/api/` 下:
| 资源 | 路径 | 描述 |
|----------|------|-------------|
| Incidents | `/api/incidents` | CRUD、状态转换、分配责任人 |
| Reports | `/api/reports` | Shifu 报告引擎查询 |
| Database | `/api/database` | 原始 ES 文档浏览和索引信息 |
| Users | `/api/users` | 用户管理 |
## 配置
SLA 阈值在 `src/main/resources/application.yml` 中配置:
| 严重级别 | 确认时间 | 解决时间 |
|----------|-------------|------------|
| Critical | 5s | 10s |
| High | 30s | 60s |
| Medium | 5m | 15m |
| Low | 1h | 24h |
## 测试
**后端单元测试和集成测试**(使用 Testcontainers 运行 Elasticsearch):
```
./gradlew test
```
**前端 E2E 测试**(Playwright):
```
cd incident-response-ui
npx playwright test
```
## 项目结构
```
├── src/main/java/org/example/incidentresponse/
│ ├── controller/ # REST controllers
│ ├── service/ # Business logic
│ ├── statemachine/ # Workflow engine, guards, actions
│ ├── reporting/ # Shifu analytics engine
│ ├── document/ # Elasticsearch document models
│ ├── dto/ # Request/response DTOs
│ ├── repository/ # Data access layer
│ ├── enums/ # Status, severity, RCA categories
│ ├── exception/ # Error handling
│ ├── config/ # App configuration
│ └── filter/ # HTTP filters (MDC logging)
├── src/test/ # Backend tests
├── incident-response-ui/ # React frontend
│ ├── src/
│ │ ├── pages/ # Page components
│ │ ├── components/ # Shared UI components
│ │ └── api/ # API client
│ └── *.spec.js # Playwright E2E tests
├── ARCHITECTURE.md # Detailed architecture documentation
└── start.sh # One-command setup script
```
## 延伸阅读
- [ARCHITECTURE.md](ARCHITECTURE.md) — 深入了解系统设计、数据模型、状态机、Shifu 引擎、API 参考和扩展性
- [Backend Configuration](src/main/resources/application.yml) — SLA 阈值、Elasticsearch 连接、日志级别
- [Vite Proxy Config](incident-response-ui/vite.config.js) — 前端开发服务器和 API 代理设置
标签:Elasticsearch, Java 17, RCA, React, SLA监控, Spring Boot, SRE, Syscalls, 事件响应平台, 事件管理, 事故追踪, 偏差过滤, 全文搜索, 后台面板检测, 域名枚举, 安全管理, 审计日志, 工单系统, 报表引擎, 根因分析, 特征检测, 状态机工作流, 生产事故, 生命周期管理, 网络研究, 证据附件, 请求拦截, 运维平台