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, 事件响应管理, 事件生命周期, 事故管理系统, 仪表盘, 企业级应用, 作战室, 全栈应用, 升级引擎, 实时更新, 故障分级, 服务等级协议, 测试用例, 自定义脚本, 运维管理