ranjithravi-sudo/incident-response-tools
GitHub: ranjithravi-sudo/incident-response-tools
一款轻量级全栈事件响应管理系统,覆盖事件全生命周期管理、SLA追踪、自动升级和根因分析。
Stars: 0 | Forks: 0
# 事件响应管理工具
全栈应用程序,用于管理具有严重性级别 (P0–P4)、生命周期跟踪、针对 P0/P1 的 Slack war room 创建、时间线、SLA 计时器、升级引擎、Root Cause Analysis 和实时更新的事件。
## 技术栈
- **Frontend:** React 18, Vite, Tailwind CSS, React Router, Socket.io client
- **Backend:** Node.js, Express
- **Database:** Supabase (PostgreSQL)
## 功能
- **事件创建** – 严重性级别 P0–P4,可选团队分配
- **事件生命周期** – Open → Investigating → Mitigating → Resolved → Closed
- **Slack war room** – 为 P0/P1 事件自动创建 Slack 频道
- **事件时间线** – 记录事件和备注,支持实时更新
- **SLA 计时器** – 按严重性划分的 SLA(分钟),显示倒计时/违约状态
- **升级引擎** – Cron 每 2 分钟运行一次;SLA 违约时自动升级至团队
- **事件仪表板** – 活跃事件、状态计数、MTTR/MTTA 指标
- **Root Cause Analysis** – 摘要、原因类别、因素、解决步骤、预防措施
- **实时更新** – 使用 Socket.io 进行事件和时间线更新
## 设置
### Supabase
1. 在 [supabase.com](https://supabase.com) 创建一个项目。
2. 在 **SQL Editor** 中,运行 `supabase/migrations/001_initial_schema.sql` 的内容。
3. 在 **Project Settings → Database** 中,复制 **Connection string** (URI,服务器的“Transaction”模式)。
### 后端
```
cd backend
cp .env.example .env
# 将 DATABASE_URL 设置为你的 Supabase 连接字符串
# 可选择设置 SLACK_BOT_TOKEN 和 SLACK_CHANNEL_ID 用于 Slack
npm install
npm run db:seed
npm run dev
```
API 运行在 **http://localhost:4000**。
### 前端
```
cd frontend
npm install
npm run dev
```
应用运行在 **http://localhost:3000**,并将 `/api` 代理到后端。实时更新通过代理使用相同的源。
### 4. Slack (可选)
- **War room (P0/P1):** 创建一个具有 `chat:write` 和 `channels:manage` (如果是私有的则为 `groups:write`) 权限的 Slack 应用。安装并设置 `SLACK_BOT_TOKEN`。
- **通知:** 将 `SLACK_CHANNEL_ID` 设置用于新事件和状态通知的频道。
- 如果缺少其中任何一项,应用将在没有 Slack 的情况下运行;war room 创建和通知将被跳过。
## API 概述
| Method | Path | 描述 |
|--------|------|-------------|
| GET | `/api/config` | Socket URL 和功能标志 |
| GET | `/api/incidents` | 列出 incidents (查询: status, severity, teamId) |
| GET | `/api/incidents/dashboard` | 活跃 incidents + 按状态计数 + SLA |
| GET | `/api/incidents/metrics` | MTTA (分钟), MTTR (分钟) |
| GET | `/api/incidents/:id` | 获取单个 incident (含 SLA) |
| POST | `/api/incidents` | 创建 incident |
| PATCH | `/api/incidents/:id` | 更新 status, team, title, description |
| GET | `/api/teams` | 列出 teams |
| GET | `/api/escalation-rules` | 列出 escalation rules |
| PUT | `/api/escalation-rules/:severity` | 更新 rule (P0–P4) |
| GET | `/api/timeline/incident/:id` | incident 的 Timeline |
| POST | `/api/timeline/incident/:id` | 添加 timeline 事件 |
| GET | `/api/rca/incident/:id` | 获取 incident 的 RCA |
| PUT | `/api/rca/incident/:id` | 创建/更新 RCA |
## 实时 (Socket.io)
- **事件:** `incident_created`, `incident_updated`, `timeline_updated`
- **订阅:** `subscribe_incident` / `unsubscribe_incident`,附带 incident `id` 用于单个 incident 更新。
## 指标
- **MTTA** – Mean Time To Acknowledge (reported → 首次 Investigating)。
- **MTTR** – Mean Time To Resolve (reported → resolved)。
标签:DevOps工具, GNU通用公共许可证, IT运维, MITM代理, MTTA指标, MTTR分析, Node.js, P0-P4严重度, PostgreSQL, RCA根因分析, React 18, Slack集成, SLA计时器, Socket.io, Socks5代理, SRE工具, Supabase, Tailwind CSS, Vite, War Room, 事件响应管理, 事件生命周期, 事故管理系统, 仪表盘, 企业级应用, 作战室, 全栈应用, 升级引擎, 实时更新, 故障分级, 服务等级协议, 测试用例, 自定义脚本, 运维管理